CrystalReportsXIを使用しています。C#/ASP.netで記述されたSharePointサイトに埋め込まれたCrystalReportsを使用します。当社のWeb開発者は、コードでレポートを作成し、SelectFormulaオブジェクトに追加することで選択基準に合格します。
私が直面している問題は、SQLコマンドオブジェクトを使用すると、選択式がwhere句としてSQLサーバーに渡されないことです。これにより、結果セット全体が照会され、サーバー上で制限されます。非常に大きなテーブルの場合、これによりパフォーマンスが大幅に低下します。
次に例を示します。SELECTfoo.id、foo.code、foo.name FROM foo foo
選択基準は次のように表示されます:{Command.name} like "someName"
次にレポートを実行すると、fooテーブル全体が照会され、Crystalはセット全体からの制限をレポートします。
代わりに、コマンドオブジェクトを使用せずにテーブルに基づいて実行すると、WHERE句がSQLクエリに追加され、すべての制限がdbレベルで実行されます。
SQLコマンドは非常に複雑になる可能性があり、WHERE句を下部に追加できるとは限らないため、これが発生すると思います。それでは、私の質問は、ある種のパススルーを強制する良い方法はありますか。C#開発者と話し合って、パラメーターを渡す方法をやり直すように依頼する必要がありますか?
助けと議論をありがとう。