7

start_dateレポートパラメータに応じて、レポートのを設定する必要があります。タイムスタンプはデータベースクエリで計算されます。

私の表現は次のようになります。

=SWITCH (
    Parameters!report_type.Value = 1,First(Fields!daily_start.Value, "Timestamps")
    ,Parameters!report_type.Value = 2,First(Fields!weekly_start.Value, "Timestamps")
    ,Parameters!report_type.Value = 3,First(Fields!monthly_start.Value, "Timestamps")
)

残念ながら、次のエラーメッセージが表示されます。

レポートパラメータ「time_from」に使用される値式は、フィールドを参照します。レポートパラメータ式でフィールドを使用することはできません

SSRSはデータセットがどの順序で呼び出されるかを確認できないため、これは許可されないことを私は知っています。しかし、これは危険ではないと思います。

すべてのタイムスタンプは、パラメータなしでクエリによって受信されます。パラメータreport_typeは、レポートが生成される前にユーザーによって選択されます。

誰かが回避策のヒントを教えてもらえますか?

4

3 に答える 3

3

回避策は次のとおりです。SQLを使用して値を取得します。

StartDatesという新しいデータセットを作成します。

SELECT CASE 
    WHEN @report_type = 1 THEN daily_start
    WHEN @report_type = 2 THEN weekly_start 
    WHEN @report_type = 3 THEN monthly_start
END AS StartDate
FROM MyTable

@report_typeとパラメータはすでにあり@time_fromます。@time_fromパラメータを使用して、デフォルト値をGet values from a queryStartDatesデータセットとValueフィールドStartDateを使用するように設定します。

これで、これで十分に機能すると思います。このクエリをデフォルト値として参照し、パラメータを変更すると@report_type、他のパラメータが更新されますが、パラメータの最初の日付は変更され@time_fromません。これは、デフォルト値クエリではなく、使用可能な値クエリで更新が行われるためです。

したがって、AvailableValuesクエリをStartDatesクエリに接続する必要もあります。これで、の変更時にクエリが実行され@report_type、デフォルト値が選択した適切な日付に設定されます。

于 2012-11-27T23:34:02.797 に答える
0

クエリからストアドプロシージャに切り替えたところ、このエラーが発生していました。私が試したこと:

  • データベースに対して十分な権限があることを確認しました(sprocを実行するにはEXEC権限またはDBOが必要です)
  • 既存のパラメーターを削除します(次に、更新フィールドを使用して、正しい名前のパラメーターを更新/取得します)
  • 指定した場合は、ストアドプロシージャの周りの角かっこを削除します
于 2014-07-17T07:02:01.020 に答える
0

場合によっては、式が少し冗長になることがあります。レポートコード関数を作成し、それをパラメーター値として使用しました。

たとえば、「CalculateDateSet」というコード関数を作成し、レポートパラメータを次の式に設定しました。

"= Code.CalculateDateSet(Parameters!Month.Value、Parameters!Year.Value"

于 2015-09-01T14:19:11.243 に答える