0

データグリッドのデータをそのまま含むレポート(複数の動的フィルターを含む)を作成する必要があるアプリケーションに取り組んでいます。現在、フィルタリングはSQLクエリから結果セットを取得しているため、次の問題が発生します。動的に生成されたクエリにフィールドをバインドできないため、SSRSまたはCrystalレポートに複数のwhereフィルターを送信できません。

これが私の質問です。whereステートメントで無制限の条件を持つレポートを作成する方法、またはCRまたはSSRSのいずれかで使用できるように動的なwhere句を使用してストアドプロシージャを作成する方法はありますか?そうでない場合は、where句でそのフィルターを連結できるレポートエンジンはありますか?

注:C#4.0をSQL Server 2008 Express(SSRSがインストールされている)およびSAPのCrystal Reports for VisualStudio2010ライブラリと一緒に使用しています。

4

2 に答える 2

0

フィルタが定義されているときにフィルタを追加する簡単なトリックは、where句に次のコードを追加することです。

where (@param is null or @param = field)

したがって、@paramが定義されていない(null)場合、フィルターは適用されません。次のように、より長いwhere句を作成できます。

where (@param1 is null or @param1 = field1)
  and (@param2 is null or @param2 = field2)
  and (@param3 is null or @param3 = field3)
  and (@param4 is null or @param4 = field4)
  ...
于 2012-07-13T14:16:59.367 に答える
0

Crystal Reportsをさらに掘り下げた後、コマンドとパラメーターを使用して、whereステートメントの一部をクエリに連結できることがわかりました。これにより、問題がある程度解決されます。これはレポートの作成方法ではないため、これを行うためのよりクリーンな方法を見つけようとします。SSRSはこれをサポートしていません。ストアドプロシージャの場合、クエリ全体を実行する文字列にしてから、そのストアドプロシージャの結果から、テーブルであるかのようにクエリを実行する必要があります。これは、率直に言って問題の価値はありません。 。

于 2012-07-17T11:43:51.103 に答える