web-dev-qa-db-ja.com

SSRS式:テキストボックスの値式に、集計には無効なスコープパラメーターがあります

私は次のエラーを受け取っています:

Error   1   [rsInvalidAggregateScope] The Value expression for the text box 
‘Textbox2’ has a scope parameter that is not valid for an aggregate function.  
The scope parameter must be set to a string constant that is equal to either 
the name of a containing group, the name of a containing data region, or 
the name of a dataset.

Textbox2の背後にある式(読みやすくするためにスペースを追加しました):

Iif(Parameters!ReportParameterPersoneelsNr.Value.Equals(String.Empty),

       "Prestaties " + First(Fields!firmanaam.Value, "DataSetHrm") + 
        "(" + First(Fields!indienstfirmanr.Value, "DataSetHrm") + ")",

       "Prestaties " + First(Fields!naam.Value, "DataSetHrm") + " " +
       First(Fields!voornaam.Value, "DataSetHrm") + 
       "(" + First(Fields!personeelsnr.Value, "DataSetHrm") + ")")

フィールド:

      ReportParameterPersoneelsNr = Reportparameter of type Text
      firmanaam.Value = VARCHAR
      indienstfirmanr.Value = Long
      naam.Value = VARCHAR
      voornaam.Value = VARCHAR
      personeelsnr.Value = Long

Stackoverflowでの検索により、次の結果が得られました。しかし、これまでのところ、彼らは私の問題を解決する助けにはなりませんでした

投稿1:集計関数の平均値に対して有効ではないスコープパラメータ

投稿2:SqlTeam

誰かが私が間違っていることを指摘できますか?

:tostring()をどこにでも追加しても役に立たなかった

注2:「+」を「&」に置き換えても問題は解決しませんでした

注3:データセット名は正しく、データセットはこのSSRSレポートに存在する唯一のものです。

Image Tds

更新:データセットに含まれるデータは有効であり、データセットの読み込みは機能しませんでした(エイリアスありとエイリアスなしで試行)

17
User999999

何が間違っているのかはわかりませんが、機能する同様のレポートを作成しました。新しい空のレポートを作成し、次のクエリを使用して(SQL Serverから)データセットを作成します。

「ACME」AS firmanaam、10000 AS indienstfirmanr、「Doe」AS naam、「Jon」AS voornaam、987654 AS personeelsnrを選択します

DataSet image

次に、パラメーターを追加します

Parameter Definition

コードを使用して、テキストボックスをレポートに追加します。

= Iif(Parameters!ReportParameterPersoneelsNr.Value.Equals(String.Empty), "Prestaties " & First(Fields!firmanaam.Value, "DataSetHrm") & "(" & First(Fields!indienstfirmanr.Value, "DataSetHrm") & ")", "Prestaties " & First(Fields!naam.Value, "DataSetHrm") & " " & First(Fields!voornaam.Value, "DataSetHrm") & "(" & First(Fields!personeelsnr.Value, "DataSetHrm") & ")")

次に、パラメーターの値を使用して、または使用せずにレポートを実行します。

Preview of Report

Preview with empty param

6
Fillet

DatasetNameで異なるExperssionを使用しているときに、このエラーが発生することがあります。

私の場合のように、私は以下のことを行うことでこのエラーを解決しました、

以下のようになる前に、

="For Man " + 
   IIF(Len(First(Fields!Lname.Value, "DataSet1")) > 0,
   First(Fields!Lname.Value, "DataSet1"),"") & IIF(Len(First(Fields!Fname.Value, "DataSet1")) > 0,
   ", " + First(Fields!Fname.Value, "DataSet1"),"")

以下に変更した後、現在は正常に機能しています。

="For Man " + 
    IIF(Len(First(Fields!Lname.Value, "LastChangedDataSetName")) > 0,
    First(Fields!Lname.Value, "LastChangedDataSetName"),"") & IIF(Len(First(Fields!Fname.Value, "LastChangedDataSetName")) > 0,
    ", " + First(Fields!Fname.Value, "LastChangedDataSetName"),"")

注:だから、ここで間違いはDataSet Name From DataSet1LastChangedDataSetNameに変更し、DataSet Nameを変更する前にすでに書いた最後のExpressionの名前を変更しました。

8
pedram

私のレポートにあったエラーは非常に似ていました。

エラー1 [rsInvalidAggregateScope] Tablix 'table1'のHidden式には、集計関数には有効ではないスコープパラメーターがあります。 scopeパラメーターは、包含グループの名前、包含データ領域の名前、またはデータセットの名前のいずれかに等しい文字列定数に設定する必要があります。

Solution Explorer+View Code(XMLエディターを開く)でレポートファイルを右クリックし、名前を検索して解決しましたレポートのメインDataSetの変更と問題の原因となった行の変更:

<TablixMember>
  <Visibility>
    <Hidden>=iIF(CountRows("MYDATASETNAME") = 0, false, true)</Hidden>
  </Visibility>
  <KeepTogether>true</KeepTogether>
</TablixMember>

この場合、(別のレポートからコピーするために)存在しないDataSetの名前を持つ<Hidden>タグ内の式を変更する必要がありました。後で、エラーの原因となったインターフェイスで行を見つけるのが簡単になりました。

したがって、エラーが代わりにValueを参照している場合は、XMLコード内のレポートのDataSet名の出現を検索し、<Value>タグを再確認して、存在しない名前を探します現在のレポート。

2
CPHPython

最近、レポートの1つで同様の問題に直面しました。このエラーが発生する理由は、データセットの名前とレポートの式が一致しないためです。

ユーザー設定が入力される日付フィールドがあり、式はFirst(Fields!column.Value, "datasetname")です。データセット名とレポートデータで指定されたデータセット名は一致する必要があります。

2
Yagna

これは、あるストアドプロシージャを別のストアドプロシージャに置き換えるときによく発生します。これは、レポートの派生物を作成している場合(月ごとではなく四半期ごとのレポートかもしれません)、類似しているが異なる新しいspを作成しているときに非常に多く発生します。

データセットの名前を変更する必要はありません。これを行うと、診断が非常に困難な問題が発生することがよくあります。

レポートエディターの性質は非常にクリックが多く、対話が集中します。レポートキャンバスをクリックして問題のある問題を探して問題を見つけることはほとんど不可能です。

MSは、式について不平を言っているメッセージを表示した直後に、問題のある式エディターを表示するのは簡単です。エディタはあまり良くありませんが、MSはそれを改善するインセンティブをほとんど持っていないようです。

提案1トラブルを回避するために、メインデータセットにDATA1または類似の名前を付けます。 SPを変更する場合は、データセット名をそのままにしてください。

問題を回避するための提案2-レポートのコピーを作成してTablixを保持する場合は、新しいSP列を追加します。nullでも、削除しないでください。 。これは可能な場合もあれば不可能な場合もあります。

提案3-問題が発生したい場合は、レポートをRDLとしてデスクトップに保存し、メモ帳で開きます。 「フィールド!」を検索します。これにより、問題の原因となっている式が表示されます。

変更した場合は、古いデータセット名も探してください。また、新しいデータセットで省略されているフィールドがある場合は検索します

1
greg

スコープ参照が適切ではありません( "DataSetHrm")。テキストボックスからのエラーメッセージは、テーブル内のグループ(スコープ名=グループ名)、テーブル自体(データ領域->スコープ名=データ領域名)、または属するデータセットのみを参照できる包含スコープを参照できるため、データ領域へ(スコープ名=データセット名)。

上記のこれらの領域がデータセット(データセット->データ領域->データグループ)と共に埋め込まれている場合、テキストボックスから参照できます。あなたの例ではそうではありません。

実際のデータセット(テーブルのデータセット)とは異なるテキストボックス内の別のデータセットを使用する場合は、lookup()関数を使用する必要があります。

1
Bimbam