0

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#開発者と話し合って、パラメーターを渡す方法をやり直すように依頼する必要がありますか?

助けと議論をありがとう。

4

1 に答える 1

1

レコード選択式がコマンドオブジェクトのクエリに追加されることはありません。

CR SDKがコマンドオブジェクトの変更をサポートしているかどうかはわかりません(ただし、読み取り専用アクセスをサポートしていることはわかっています)。

Commandオブジェクトは、プログラムでアクセスできるパラメーター(2008年には、複数値のパラメーターにすることができます)をサポートします(レポートのパラメーターフィールドに変換されます)。

クエリが複雑なため、Commandオブジェクトを使用していると想定しています。複雑さをSQLビューにプッシュし、「ビジュアルリンク」エキスパートを使用してクエリを作成できる場合は、柔軟性が向上します。

于 2011-09-13T13:41:35.393 に答える