質問

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

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

アイデア?

役に立ちましたか?

解決

DDSクエリに条件を追加して、注文時間を確認するだけです。過去1時間に注文がある場合、クエリは結果を返す必要があります。

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

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

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

 WHERE @HoursAgo > 0

また、追加のチェックを追加して、注文が現在からであることを確認することもできます。

他のヒント

データセットに行が返されない場合にカスタムメッセージを表示できる「ノロー」と呼ばれるRDLデータセットのプロパティがあります。特別なメッセージだけで、空のレポートを送信します。

サブスクリプションをレポートから発射しないようにしたい場合は、これを行うことを知っている唯一の方法は、ストアドプロシージャの場合、選択ステートメントの行カウントを確認し、行数がゼロの場合はエラーを投げることです。これをやってのけるエレガントな方法ではありませんが、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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top