これは私が評価しようとしている式です:
Sum(IIF(QUALITY<=9.0,1.0,0.0))
問題はそれです
string expr = "Sum(IIF(QUALITY<=9.0,1.0,0.0))";
dataTable.Compute(expr, "")
エラーをスローします
Syntax error in aggregate argument: Expecting a single column argument with possible 'Child' qualifier.
主な課題は、式がRDLファイルから文字列でプログラムに送られるため、式を手動で書き直すことができないことです。そのため、元々は次のようになります。
Sum(IIF(Fields!QUALITY.Value<=9.0,1.0,0.0))
私のプログラムは、それをに渡されたときに有効な式となる文字列に自動的に変換する必要がありますdataTable.Compute()
。マイクロソフトのComputeメソッドのドキュメントから、C#は「フィールド」が気に入らないと判断しました。または構文の「.Value」部分。これらを削除することで、より単純な式が正常に機能するようになります。たとえば、これらのステートメントは両方とも期待値を返します。
dataTable.Compute("Sum(QUALITY)");
dataTable.Compute("Count(QUALITY)");
私がやろうとしていることをすることは可能ですか?それが機能するためには、どこかで構文を少し変更する必要があるように感じますが、インターネットで答えを見つけることができず、かなりイライラしています。
これが私がこれまでに試したことのいくつかですが、役に立ちませんでした:
Sum(IIF([QUALITY]<=9.0,1.0,0.0))
Sum(Convert(IIF(QUALITY<=9.0,1.0,0.0), 'System.Double'))
Sum(IIF(Convert(QUALITY, 'System.Double')<=9.0,1.0,0.0))