2012-11-27 10 views
7

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

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

レポートパラメータ「time_from」の使用値式がフィールドを参照:

=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") 
) 

残念ながら、私は、エラーメッセージが表示されます。フィールドはレポートパラメータ式では使用できません

SSRSでは、どのような順序のデータセットが呼び出されるかわからないため、これは許可されていません。しかし、私はこれが危険ではないと思う。

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

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

+1

あなたが固定隠されたあなたのdaily_startためのパラメータ、weekly_start、毎月の代わりのフィールド?私はfetchxmlでこれを行うことができるものならば – jbl

答えて

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パラメータを使用して、StartDatesデータセットと値フィールドStartDateを使用して、デフォルト値をGet values from a queryに設定します。

ここで、このクエリをデフォルト値として参照していて、@report_typeパラメータを変更すると、他のパラメータが更新されますが、@time_fromパラメータの最初の日付は決して変更されません変更。これは、デフォルト値のクエリではなく、使用可能な値のクエリでリフレッシュが発生するためです。

したがって、利用可能な値のクエリをStartDatesクエリに接続する必要があります。今すぐあなたのクエリは@report_typeの変更で発生し、デフォルト値はあなたの選択のための適切な日付に設定されます。

+1

を使用してもらえますか? –

0

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

  • を私はデータベースに十分な権限を持っていた保証(あなたがTEH SPROCを実行するためのEXEC権利またはDBOが必要)
  • 既存のパラメータを削除(して、正しい名前を取得/更新するためにリフレッシュフィールドを使用しますあなたが指定した場合のものバック)
+0

角括弧を削除するには役立った、ありがとう! – ConstantineK

0

ことをストアドプロシージャの周りの角括弧を削除時々、式は少し冗長に取得することができます。私はレポートコード関数を作成し、それをパラメータ値として使用しました。

は例えば、私は「CalculateDateSet」と呼ばれるコードの機能を作成し、この式にレポートのパラメータを設定します!

「= Code.CalculateDateSet(パラメータMonth.Value、パラメータイヤー!。バリュー」

+0

あなたがするように親切にすることでした提案された回避策について少し詳しく説明してください。 – user3285866

関連する問題