さて、これは楽しいものであり、私がこれまで読んだことの一部であり、SSRS のデフォルト値を処理するデフォルトの動作のためにこれを行うことができないと主張する人もいます。しかし、私はかなり遠くまで到達したので、最後まで到達できるかどうか興味があります.
問題: 私がやりたいのは、ユーザーに「今月」、「先月」などのステートメント間で PRE DEFINED を取得させることです...これにより、その文字列参照の DateTime が変数に入力されますが、ユーザーはそれを変更できます後で、親文字列に基づいて更新するか、ユーザーが SINGLE DATETIME PARAMETER で別の文字列を選択できるようにする必要があります。
まず、何が機能し、何が機能しないかを見てみましょう。
I. データセットをこれにバインドします。省略形は次のようになります。
select
'Today' as Description
, DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) BegDt
union
select
'ThisMonth'
, Dateadd(month, Datediff(month, 0, getdate()), 0)
Ⅱ.次に、「DatesPeriod」というパラメーターを設定し、「クエリから値を取得」を選択するときに、パラメーターのフィールドとラベルとして「説明」を追加します。ユーザーはドロップダウンから「Today」または「ThisMonth」を選択できるようになりました。
III. ここで、別のデータセットをセットアップし、「DatesSelected」というラベルを付けます。説明のために、単純にして、パート I のデータセットをネストするだけで、where 句をリストします。基本的に、同じデータセットを再度使用していますが、一度に 1 つの行を強制的に返します。
select *
from
(
select
'Today' as Description
, DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) BegDt
union
select
'ThisMonth'
, Dateadd(month, Datediff(month, 0, getdate()), 0)
) as x
where x.Description = @DatesPeriod
IV. 「Start」という別のパラメーターを定義します。これは DateTime であり、上記のデータセットからその値とデフォルト値を取得します。ユーザーが最初のテキスト変数を変更すると、依存する DateTime 変数も変更されます。テキストの選択を基本的に datetime 変数にバインドしました。これは、スコープが説明の使用可能なデフォルト値のみに制限されています。これにより、スコープが 1 つに制限され、デフォルトが強制的に渡されます。
V. それだけでは十分ではありません。ユーザーが FREE DATE RANGES を自由に選択できるようにしたいと考えています。現在のセットアップでは、スコープが AVAILABLE VALUES によって制限されているため、この日付ピッカーの使用は許可されません。ただし、オンデマンドで更新される datetime 変数にテキストを渡すには、これを行う必要があります (最初だけでなく、レポートの実行中に変更された場合)。そこで、別の DateTime パラメータを作成して「UserStart」と呼び、デフォルトを「[@Start]」にして、「Start」からの依存関係としてデフォルト値を取得します。
Ⅵ.ここで「Choice」というテスト データセットを作成して、データが希望どおりに表示されていることを視覚的に確認します。
Select isnull(@UserStart, @Start) as Choice
VII. テーブル オブジェクトを作成してレポートに配置し、上記の 1 つのセルに配置して、ユーザーが既定の「開始」値を (SSRS によって提供されるカレンダー表示から) 独自の選択で上書きすると、画面。
したがって、この時点ではすべてが注意を払って機能します。エンド ユーザーが既定のセットを選択するか、独自のセットを選択できるようにするには、両方の日時パラメーターを表示する必要があります。2 番目のパラメーター 'Start' を非表示にしようとすると、レポートが実行される最初の時間のみにデフォルトが設定され、最初のパラメーターが変更されるたびにそれが必要になります。表示されている場合は問題なく動作しますが、機能的には、ユーザーが同じである 2 つのレポート パラメーターを表示することは望ましくありません。「開始」パラメーターを返すためのカスタム コードを試して、さらに別のデータセットを作成しましたが、SSRS は、デフォルトの更新または選択したい ANY DATE に柔軟に対応できないように作られていることがわかっています。パラメーターを更新して、別の変数から画面上で更新したい場合は、それを伝える必要があります。利用可能な値とデフォルト値が変更されました。ただし、これによりカレンダーオプションが削除されるため、パラメーターを別のパラメーターに渡す必要があります。ただし、2 番目のパラメーターを非表示にすると、値が渡されません。
どんな助けでも大歓迎です。