我每小时都有一份报告,检查新订单。它工作得很好,但我想只发送至少一个订单的报告。如果报告为空 - 我根本不想发送报告。
为了扩展这一点,我想只在有新订单的情况下发送报告。
想法?
答案 0 :(得分:3)
只需在DDS查询中添加条件即可检查订单时间。如果过去一小时内有任何订单,您的查询应返回结果集,否则不返回任何内容。
例如,在您的查询中添加以下逻辑
DECLARE @HoursAgo int
SELECT Top 1 @HoursAgo = DateDiff('hh',getdate(), OrderTime)
FROM Orders
ORDER BY OrderTime DESC
在您的查询中添加以下子句
WHERE @HoursAgo > 0
您可能还需要添加额外的检查以确保订单来自当天。
答案 1 :(得分:-1)
如果数据集没有返回任何行,则RDL数据集的属性名为“noRows”,可以显示自定义消息。它仍然会发送空报告,只是发送一条特殊信息。
如果您希望订阅不会触发报告,那么我知道这样做的唯一方法是检查存储过程中select语句的行计数,如果行计数为零则抛出错误。不是一种优雅的方法来解决此问题,但它不会发送报告,因为错误发生在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