2016-05-08 1 views
1

Я пытаюсь сделать отчет о доставке SSRS, данные которого необходимо сгруппировать клиентом и использовать адрес клиента в качестве заголовка отчета. Один набор данных содержит несколько клиентов, и каждый клиент может иметь более 10 строк информации о деталях. Однако строки с подробной информацией ограничены 10 на каждой странице, так как бумага для накладных листов предварительно напечатана.Отчеты SSRS Группа не отображается должным образом после ограниченных строк на страницу

Поэтому я группирую все данные по информации о клиенте, используя большое матричное гнездо с меньшей матрицей, чтобы отображать как информацию о клиенте (заголовок), так и подробную информацию о деталях (подробности).

Чтобы ограничить количество строк на странице, я использую команду '= Потолок (строка RowNumber (Nothing)/10) в группе.

Однако после этого я замечаю большой побочный эффект. Например, клиент А имеют 15 подробно линий и Клиент Б имеет 8 линии детализации, ожидаемый результат:

  • Страница 1: Клиент адрес & 10 сведений об элементе
  • Страница 2: Клиент адрес деталь & 5 пункта
  • Page 3: Клиент B Адрес & 8 подробнее пункт

но фактический результат:

  • Страница 1: Клиент не определено Адрес & 10 подробнее пункт
  • Page 2: Клиент не определено Адрес & 5 подробнее пункт
  • Страница 3: Клиент Б Адрес & 5 подробнее пункт
  • Страница 4: Клиент Б Адрес & 3 детали товара

Это связано с тем, что информация о RowNumber клиента B начинается с 16, поэтому на первой странице клиента B отображается только 5 строк, что является неожиданным. Есть ли возможный способ достижения ожидаемого результата?

Pic:Big matrix nest with small matrix

Pic:limit rows per page

ответ

0

Проблема в том, ваше второе условие группировки:

=Ceiling(Rownumber(Nothing)/10) 

этой группы и, таким образом, вызывает разрыв страницы на каждой 10-й линии, независимо от заказчика, что линии для. В вашем примере клиент C будет иметь только 7 строк на своей первой странице, потому что в общей сложности 23 были напечатаны до сих пор, 15 для A и 8 для B.

Надеюсь, ваш набор данных основан на Sql, потому что мы можем рассчитать группу номер страницы в результатах запроса, используя некоторые встроенные функции Row_Number, Over и Partition:

SELECT Floor((Row_Number() OVER(partition by CustomerName ORDER BY CustomerName, ItemNumber)-1)/10) AS GroupPageNumber, 
    CustomerName, ItemNumber 
FROM Items 
ORDER BY CustomerName, ItemNumber 

Это вычисляет номер группы страниц с максимальным количеством 10 элементов на странице, так что теперь вы просто свою вторую группировку выражение просто =Fields!GroupPageNumber.Value.

+0

Благодарим за ответ, это решение работает. Однако я все же считаю, что макет (например, 10 строк на страницу) должен управляться в отчете, а не в SQL-запросе. Есть ли какой-либо возможный способ сделать это в конфигурациях SSRS? – invicil

+0

Не существует свойства для максимального количества строк на странице. Вы можете играть с настройками нижнего поля, чтобы попытаться обеспечить это для отчета, но проблема будет возникать в веб-браузере, где интерактивная высота больше похожа на руководство, чем правило, и вы можете получить больше или меньше строк, отображаемых в браузере. Если предварительный просмотр не был важен, вы, вероятно, могли бы заставить его работать таким образом. –

+0

Раньше я пытался использовать высоту страницы, однако для случая 10+ строк для одного клиента деталь на второй странице снова не отображает заголовок группы. И поскольку данные заголовка группы динамические, я не могу установить «Повторить на каждой странице» значение true. Я также попытался использовать переменную, а не rowcount в отчете, как критерии группы, однако SSRS не может принимать переменные как групповые критерии. Мне просто интересно, нет ли способа сделать это в SSRS .... – invicil

Смежные вопросы