2012-02-01 6 views
3

В мой отчет был добавлен подзаголовок. Цель состоит в том, чтобы просто скрыть подчиненный отчет, если в нем нет данных.Скрыть пустой отчет в SSRS2008 R2

NoRows свойство было упомянуто на this thread on Microsoft forums, но я думаю, что это для SSRS 2005 как нить, как довольно старая.

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

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

ответ

5

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

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

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

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

+0

я получил аналогичный ответ от форумах MSDN прежде, http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/ Тема/3e2d45aa-a9b4-4c6c-b43a-e7e4d5222196. Я отвечу на ваш ответ как ответ здесь. Благодарю. – AnarchistGeek

0

AnarchistGeek

Здравствуйте,

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

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

ex. = IIF (Fields! Field1.Value НИЧЕГО, правда, ложь)
(Field1 в моем случае был возвращенный столбец данных из родительского отчета.)

Сделайте ваши изменения соответственно :)

0

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

Этот вопрос дал мне идею How to supress empty subreports in SSRS 2008, но мне даже не пришлось использовать выражения, потому что по умолчанию SSRS не будет отображать вложенные данные, если он ничего не возвращает.

0

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

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

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

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

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

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

1

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

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

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

0

Более простым решением является:

Sanjay Kumar Rajarao responded on 16 Oct 2013 12:15 AM Access sub report properties - visibility - show based on expression. Enter this code:

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

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