Скрыть пустой подотчет в SSRS2008 R2

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

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

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

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


person AnarchistGeek    schedule 01.02.2012    source источник


Ответы (6)


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

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

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

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

person Jamie F    schedule 01.02.2012
comment
Я уже получал аналогичный ответ с форумов msdn, social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/. Я приму ваш ответ как ответ здесь. Благодарю. - person AnarchistGeek; 02.02.2012

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

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

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

person Des Horsley    schedule 07.10.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)

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

person Jon Dysinger    schedule 11.07.2016

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

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

person mishkin    schedule 27.12.2012

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

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

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

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

person Elis Javier Mendez Perez    schedule 13.11.2017

АнархистГик

Привет,

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

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

бывший. =IIF(Fields!Field1.Value IS NOTTHING,true,false)
(Поле1 в моем случае было возвращенным столбцом данных из родительского отчета.)

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

person Bonez024    schedule 20.03.2012