SQL Server, управляемая данными подписка прекратить отправку - PullRequest
2 голосов
/ 05 ноября 2010

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

Чтобы продлить это, я хотел бы отправить отчет только при наличии новых заказов.

Идеи? * * 1005

Ответы [ 2 ]

3 голосов
/ 05 ноября 2010

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

Например, в свой запрос добавьте следующую логику

 DECLARE @HoursAgo int
 SELECT Top 1 @HoursAgo = DateDiff('hh',getdate(), OrderTime) 
 FROM Orders 
 ORDER BY OrderTime DESC  

В свой запрос добавьтеследующий пункт

 WHERE @HoursAgo > 0

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

0 голосов
/ 05 ноября 2010

Существует свойство набора данных RDL, называемое "noRows", которое может отображать пользовательское сообщение, если в наборе данных не возвращено ни одной строки.Он по-прежнему будет отправлять пустой отчет, только со специальным сообщением.

Если вы хотите, чтобы подписка не запускала отчет, то единственный способ, который я знаю, - это проверить количество строк в списке выбора.оператор, если ваша хранимая процедура и выдать ошибку, если количество строк равно нулю.Не элегантный способ справиться с этим, но он не отправит отчет, потому что ошибка происходит на стороне T-SQL и SSRS не сможет отобразить отчет.

declare @rows int

select @rows = -1

<select statement here>

select @rows = @@rowcount

if ( @rows < 1 )
begin
    RAISERROR ('no rows returned', 11, 1 );
end
...