新しい注文を確認するレポートを 1 時間ごとに実行しています。うまく機能していますが、少なくとも 1 つの注文がある場合にのみレポートを送信したいと思います。レポートが空の場合 - レポートをまったく送信したくありません。
これを拡張するために、新しい注文がある場合にのみレポートを送信したいと思います.
アイデア?
新しい注文を確認するレポートを 1 時間ごとに実行しています。うまく機能していますが、少なくとも 1 つの注文がある場合にのみレポートを送信したいと思います。レポートが空の場合 - レポートをまったく送信したくありません。
これを拡張するために、新しい注文がある場合にのみレポートを送信したいと思います.
アイデア?
注文時間を確認するには、DDS クエリに条件を追加するだけです。過去 1 時間に注文があった場合、クエリは結果セットを返す必要があります。それ以外の場合は何も返しません。
たとえば、クエリに次のロジックを追加します。
DECLARE @HoursAgo int
SELECT Top 1 @HoursAgo = DateDiff('hh',getdate(), OrderTime)
FROM Orders
ORDER BY OrderTime DESC
クエリに次の句を追加します
WHERE @HoursAgo > 0
注文が当日のものであることを確認するために、追加のチェックを追加することもできます。
「noRows」と呼ばれる RDL データセットのプロパティがあり、データセットに返される行がない場合にカスタム メッセージを表示できます。特別なメッセージだけで、空のレポートを送信します。
サブスクリプションがレポートを起動しないようにする場合、私が知っている唯一の方法は、ストアド プロシージャの場合は 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