Скрыть пустой подотчет в SSRS2008 R2 - PullRequest
6 голосов
/ 01 февраля 2012

Я добавил подотчет в свой отчет.Цель состоит в том, чтобы просто скрыть подотчет, если в нем нет данных.

Свойство NoRows было упомянуто в этой теме на форумах Microsoft , но я полагаю, что оно относится к SSRS 2005 в качестве потокакак довольно старый.

Нет ли очевидного способа скрыть подотчет, если в нем нет данных?Я мог бы скрыть таблицу в самом подотчете, но мне также нужно скрыть строку, в которой размещен подотчет.Для этого мне нужно указать, есть ли в подотчете данные или нет в основном отчете.

Не могли бы вы дать подсказку, чтобы разобраться в этом?

Ответы [ 6 ]

5 голосов
/ 01 февраля 2012

У меня была похожая проблема год назад или около того.Мои смутные воспоминания об этом:

Поведение по умолчанию, насколько я помню, заключалось в том, что SSRS не будет отображать подотчет, если наборы данных в подотчете не возвращают строк.Это выполняет половину того, что вы хотите, но не позволяет родительскому отчету знать, скрывать ли область подотчета или нет.IIRC, свойство NoRows контролирует только то, что будет показано в этом случае, но его непросто проверить во время выполнения, чтобы изменить другие свойства.

Мое окончательное решение состояло в том, чтобы создать упрощенный запрос в родительском отчете, которыйбудет указывать, будут ли в подотчете какие-либо строки.Я использовал это для контроля видимости строк и вложенных отчетов.

Я подозреваю, что есть более элегантный ответ ...

3 голосов
/ 07 октября 2016

Я разместил подотчет в отдельном ряду. Затем я отредактировал файл rdl в текстовом редакторе и установил высоту строки равной 0 (дизайнер не позволит вам сделать это).

Если высота строки равна 0, строка практически скрыта, пока подотчет не получит данные, после чего подотчет определяет высоту строки, и все выглядит снова нормально.

Альтернативой редактированию rdl может быть установка высоты строки в коде, хотя я не рассматривал это.

1 голос
/ 12 июля 2016

Я столкнулся с этой проблемой, и ни один из ответов не помог мне.В моем случае я преобразовывал отчет Crystal Report в отчет SSRS и использовал подотчет, который мог бы быть для каждой группы.Это было довольно просто в Crystal Reports, потому что вы могли подавить пустые разделы с помощью флажка.

Что работало для меня в SSRS и было очень чисто, так это добавление подзапроса / CTE в мой основной запрос отчета, который получил числоколичество строк, которые будут присутствовать в данных подотчета.Например:

SELECT CommonCriteria, Count(*) [RowCount]
FROM TableUsedInSubReport
GROUP BY CommonCriteria

Затем просто присоедините этот подзапрос / CTE к вашему основному запросу по общим критериям.Как только вы это сделаете, это очень просто, просто щелкните правой кнопкой мыши крайний левый угол строки в таблице и выберите «Видимость строки».Затем вы используете выражение, например ...

=IIF(Sum(Fields!RowCount.Value) > 0, false, true)

Таким образом, если в подотчете есть какие-либо строки для отображения, они будут отображаться, а если в подотчете нет строк, они будут скрытыи не оставляйте пустое пространство.

0 голосов
/ 13 ноября 2017

Более простое решение:

Санджай Кумар Раджарао ответил 16 октября 2013 г. 12:15 Доступ к свойствам подотчета - видимость - показать на основе выражения.Введите этот код:

= IIF (RowNumber (Nothing)> 0, False, True)

https://community.dynamics.com/gp/f/32/t/114129

0 голосов
/ 27 декабря 2012

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

Этот поток дал мне идею Как подавить пустые вложенные отчеты в SSRS 2008 , но мне даже не пришлось использовать выражения, потому что по умолчанию SSRS не отображает вложенный отчет, если ничего не возвращает.

0 голосов
/ 20 марта 2012

AnarchistGeek

Привет,

Я только что столкнулся с этим вопросом сам. Ужасная ошибка в строке «Ошибка: не удалось отобразить подотчет» действительно раздражала меня.

Решение: Чтобы решить эту проблему, я просто вложил вложенный отчет в прямоугольник и использовал выражение для видимости этого прямоугольника, например, так.

ех. = IIF (Поля! Field1.Value НИЧЕГО, true, false)
(Поле 1 в моем случае было возвращенным столбцом данных из родительского отчета.)

Внесите соответствующие изменения:)

...