SQL Server Reporting Services 2005 - Как обрабатывать пустые отчеты - PullRequest
5 голосов
/ 01 октября 2008

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

Когда я указываю параметры доставки, такой конфигурации нет.

Редактировать : я использую SQL Server Reporting Services 2005.

Некоторые возможные обходные пути, указанные ниже:

MSDN: Расширения служб отчетов

Свойства NoRows и NoRowsMessage

Я должен разобраться в этих вещах.

Ответы [ 4 ]

1 голос
/ 23 июля 2009

Нашел это где-то еще ...

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

  1. Создание подписки на отчет со всеми необходимыми получателями.

  2. Установите, чтобы подписка работала еженедельно во вчерашний день (т. Е. Если сегодня вторник, выберите понедельник) с расписанием, начинающимся на сегодняшнюю дату и останавливающимся на сегодняшнюю дату. По сути, это расписание никогда не будет выполняться.

  3. Откройте вновь созданное задание в SQL Management Studio, перейдите к шагам и скопируйте строку SQL (она будет выглядеть примерно так: EXEC ReportServer.dbo.AddEvent @ EventType = 'TimedSubscription', @ EventData = '1c2d9808-aa22-4597-6191-f152d7503fff')

  4. Создайте свою собственную работу в SQL с фактическим расписанием и используйте что-то вроде:

ЕСЛИ СУЩЕСТВУЕТ (ВЫБЕРИТЕ критерии тестирования ...)

НАЧАТЬ

EXEC ReportServer.dbo.AddEvent @EventType = ... и т. Д.

END

1 голос
/ 01 октября 2008

Да, я не думаю, что это возможно. Вы можете использовать свойство NoRows вашей таблицы для отображения сообщения, когда данные не возвращаются, но это не помешает прикреплению отчета. Но, по крайней мере, когда они открывали файл Excel, он мог распечатать ваше собственное сообщение вместо пустого документа.

1 голос
/ 01 октября 2008

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

0 голосов
/ 20 октября 2008

Я успешно использовал подписку на основе данных и таблицу с моими подписчиками, причем запрос подписки на основе данных выглядит следующим образом:

SELECT * FROM REPORT_SUBSCRIBERS WHERE EXISTS (SELECT QUERY_FROM_YOUR_REPORT)

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


Для ваших целей вы можете воспользоваться настройками доставки «Включить отчет» и «Комментарий».
Я полагаю, что такой запрос подписки на основе данных будет работать для вас:

SELECT 'person1@domain.com; person2@domain.com' AS RECIPIENTS,
CASE WHEN EXISTS (REPORT_QUERY) THEN 'TRUE' ELSE 'FALSE' END AS INCLUDE_REPORT,
CASE WHEN EXISTS (REPORT_QUERY) THEN 'The report is attached' ELSE 'There was no data in this report' END AS COMMENT

Затем используйте эти столбцы в соответствующих полях при настройке параметров доставки для подписки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...