2011-09-13 6 views
0

Crystal Reports XIを使用しています。私たちは、C#/ ASP.netで書かれた共有ポイントサイトに埋め込まれたCrystal Reportsを使用します。私たちのWeb開発者はコードでレポートを作成し、Select Formulaオブジェクトに追加することによって選択基準を渡します。選択式SQLコマンドオブジェクトでパススルーが機能しない

私が実行している問題は、SQLコマンドオブジェクトを使用すると、選択式がwhere句としてSQL Serverに渡されないということです。これにより、結果セット全体が照会され、サーバー上で制限されます。非常に大きなテーブルの場合、これはかなりのパフォーマンスヒットを引き起こしています。 FOO fooのFROM SELECT foo.id、foo.code、foo.name

選択基準として示されている: "someNameという"

場合等 {Command.name}ここ

の例です私はその後、fooテーブル全体が照会されたレポートを実行し、その後、クリスタルはセット全体からの制限を報告します。

代わりにコマンドオブジェクトのないテーブルに基づいて行うと、WHERE句がSQLクエリに追加され、すべての制限がdbレベルで行われます。

これは、SQLコマンドが非常に複雑になる可能性があり、下部にWHERE句を追加することが常に可能なわけではないためです。私の質問には、ある種のパススルーを強制する良い方法があります。私はC#の開発者と話し、パラメータを渡す方法を改めて尋ねるべきでしょうか?

ご協力いただきありがとうございます。

答えて

1

レコード選択式は、コマンドオブジェクトのクエリに決して追加されません。

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

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

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

+0

これは本当に良いアイデアです。ビューを使用して複雑なロジックを保存し、リンクを介してCR経由で追加することができます。次に、CRはwhere節の選択式を通過します。 – thaagenson

関連する問題