私は現在、ユーザーがCrystal Reportsのバッチを実行、表示、およびエクスポートできるようにするC#のプログラムを作成中です。レポートはCrystal Reports 2008 GUIを使用して作成されました。これを行う主な理由の1つは、Crystal ReportをPDFにエクスポートするときにハイパーリンクを維持できるようにすることです。私のプログラムは、rtfにエクスポートし、rtfをpdfに変換することでこれを行います。誰かがPDfに変換するときに、あまり複雑ではないハイパーリンクを保持する方法を知っているなら、それを聞きたいのですが、それは私の現在の質問ではありません。Crystal Reportで使用されるSQL SELECT文を取得するにはどうすればよいですか?
私は、エクスポートをできるだけ短時間で行うためにプログラムを最適化する方法について、多くのテストを行いました。私が見たことから、データのアプリケーションクエリを持つと、結果セットをCrystal Reportにバインドするのがはるかに速い方法です。私の問題は、プログラムにクエリをハードコードすることができないことです。Crystal Report自体からクエリを取得する必要があります。
Crystal Reports 2008には、[データベース]メニューの[SQLクエリの表示]というオプションがあります。これにより、指定されたレポートに使用されるSQLクエリがウィンドウに表示されます。これはまさに私のアプリケーションの中から私の手を得るために必要なものです。私はクリスタルレポートを読み込み、デバッグ中にクエリーを見つけようとするReportDocumentオブジェクトを横断しましたが、運はありません。
私の質問は次のとおりです。特定のCrystal Reportで使用されているクエリを引き出す方法はありますか?
レポートのテーブルが「SQLコマンド」の場合でも、データソースは設定できますか?テーブルをデータセット(xsd)から作成しなければならないと思いましたか? – dotjoe
私のテストでは、Crystal Reportは「SQLコマンド」を「テーブル」として使用していました。レポートで「SQLコマンド」を構成したのと同じSQL selectを使用して、データベースから照会したデータセットにレポートをバインドすることは問題ありませんでした。それは完全に機能し、それ自身のデータを更新するためにレポート自体を取得するよりも速かった。 – Chronicide
興味深いことに、私はPUSHモデルにレポートを変換しようとしていますが、データソースを渡すだけの場合は必要ありません。私はすべてw /およびw/outパラメータを使用してストアドプロシージャです。 – dotjoe