我有一份每小时检查新订单的报告。但是效果很好,我只想在至少有一个订单的情况下发送报告。如果报告为空 - 我根本不想发送报告。
为了扩展这一点,我只想在有新订单时发送报告。
想法?
我有一份每小时检查新订单的报告。但是效果很好,我只想在至少有一个订单的情况下发送报告。如果报告为空 - 我根本不想发送报告。
为了扩展这一点,我只想在有新订单时发送报告。
想法?
只需在您的 DDS 查询中添加一个条件即可检查订单时间。如果过去一小时内有任何订单,您的查询应该返回您的结果集,否则什么也不返回。
例如,在您的查询中添加以下逻辑
DECLARE @HoursAgo int
SELECT Top 1 @HoursAgo = DateDiff('hh',getdate(), OrderTime)
FROM Orders
ORDER BY OrderTime DESC
在您的查询中添加以下子句
WHERE @HoursAgo > 0
您可能还想添加额外的检查以确保订单来自当天。
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