我有一个每小时检查新订单的报告。但是,它运行良好,我只想在至少一份订单时发送报告。如果报告为空 - 我根本不想发送报告。

为了扩展这一点,我只想在有新订单时发送报告。

想法?

有帮助吗?

解决方案

只需在DDS查询中添加条件即可检查订单时间。如果在过去的一个小时中有任何订单,您的查询应返回您的结果集,否则什么也不会返回。

例如,在查询中添加以下逻辑

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

在您的查询中添加以下子句

 WHERE @HoursAgo > 0

您可能还需要添加额外的支票,以确保订单是从当天开始的。

其他提示

RDL数据集的属性称为“ Norows”,如果数据集没有返回任何行,则可以显示自定义消息。它仍然会发送空报告,并带有特殊消息。

如果您希望订阅不启动报告,那么我知道这样做的唯一方法是检查选择语句的行计数,如果您存储的过程,如果行计数为零,则丢弃错误。这不是一种优雅的方法来实现此功能,但它不会发送报告,因为错误发生在T-SQL侧,而SSR将无法呈现报告。

declare @rows int

select @rows = -1

<select statement here>

select @rows = @@rowcount

if ( @rows < 1 )
begin
    RAISERROR ('no rows returned', 11, 1 );
end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top