2012-04-25 7 views
4

У меня есть один табликс в отчете SSRS, который извлекает данные из хранимой процедуры.SSRS нет данных в отчете

Я пытаюсь показать сообщение пользователю, когда данные отсутствуют, «** Нет данных для этого отчета * ». Я могу сделать это легко, указав это сообщение в свойстве ** NoRowsMessage свойства tablix. Но я хочу показать заголовки tablix вместе с этим сообщением.

Если я не устанавливаю свойство NoRowsMessage, я получаю заголовки, но нет сообщений, но если да, то получаю сообщение, но нет заголовков.

Мне нужна помощь.

Примечания: Я использую SSRS 2008.

Edit:

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

ответ

5

Объект tablix связан с базовым набором данных, поэтому, если данных нет, на выходе нет таблицы.

За исключением использования свойства NowRowsMessage, единственный способ, который я могу придумать для обеспечения этого, заключается в том, чтобы гарантировать, что ваш запрос возвращает пустой заполнитель, когда возвращаются строки. Таким образом, у вас будет, по существу, одна строка данных.

Затем вы можете попытаться добавить условное выражение в таблицу (т. Е. Свойство Видимость строки сведений), чтобы предотвратить появление строк, содержащих ваш заполнитель.

Так что в вашем запросе вы могли бы:

IF (@@ROWCOUNT= 0) 
BEGIN 

SELECT 
'[IAMEMPTY]' as [Col1] 
,'[IAMEMPTY]' as [Col2] 
,'[IAMEMPTY]' as [Col3] 

END 

, а затем в свойство видимости строке детализации вашего стола:

=Iif(Fields!Col1.Value = "[IAMEMPTY]",True,False) 

EDIT: В качестве альтернативы, чтобы проверить, если набор данных пуст в SSRS и показать прямоугольник, содержащий ваши сообщения/заголовки (как указано в комментарии TooSik), вы можете настроить прямоугольник с этим в выражении Видимость:

=Iif(Rownumber("Dataset_Name")=0, False,True) 
+2

Или вы могли бы иметь кучу текстовых полей, сгруппированных по прямоугольнику, содержащему ваши заголовки ... этот прямоугольник должен иметь правило «Видимость», которое показывает область только тогда, когда нет данных, когда есть данные, обычный Tablix будет отображаться, в противном случае будут отображаться текстовые поля в их контейнерах (в основном, для переключения видимости) ... просто мысль! – ToOsIK

+0

Ну, я думал добавить текстовое поле с соответствующим сообщением и переключить видимость, когда в таблице нет строк. Но я не понял, как проверить отсутствие строк в tablix из выражения Visibility текстового поля. , :( –

+0

Вы проверили бы количество строк в DataSet, а не Tablix, чтобы сделать это. Я добавил синтаксис выше. – GShenanigan

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