2

新しい注文を確認するレポートを 1 時間ごとに実行しています。うまく機能していますが、少なくとも 1 つの注文がある場合にのみレポートを送信したいと思います。レポートが空の場合 - レポートをまったく送信したくありません。

これを拡張するために、新しい注文がある場合にのみレポートを送信したいと思います.

アイデア?

4

2 に答える 2

3

注文時間を確認するには、DDS クエリに条件を追加するだけです。過去 1 時間に注文があった場合、クエリは結果セットを返す必要があります。それ以外の場合は何も返しません。

たとえば、クエリに次のロジックを追加します。

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

クエリに次の句を追加します

 WHERE @HoursAgo > 0

注文が当日のものであることを確認するために、追加のチェックを追加することもできます。

于 2010-11-05T15:00:20.213 に答える
-1

「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
于 2010-11-05T17:31:26.393 に答える