web-dev-qa-db-ja.com

Crystal Report .rptファイルから生のSQLクエリを抽出する

私が書いていない.rptファイルがあり、ドキュメントを見つけることができません。このレポートから生成されたSQLを確認して、プルされたデータと使用されたWHERE句パラメーターを把握できるようにしたいと思います。

開いてレポートのレイアウトを確認できます。しかし、Database | Show SQL Query ...を選択すると、レポートはデータソースに接続しようとします。問題は、使用されているデータソースがわからないことです。おそらくODBCクエリを書いた人が使用した接続です。その段階で私ができることは「キャンセル」だけです。レポートデザイナーを見てください。

何か不足していますか?データソースに接続せずにSQLクエリにアクセスできますか?選択基準の表示はデータ接続に依存すべきではないようです。

ありがとう。

バージョン:Crystal Reports 2008

18
Greg P

これは古いスレッドであることはわかっていますが、同じ問題が発生しました。事実上、以前は外部機関から取得されたデータベース/アプリケーションを使用していました。

現在はデータベース/アプリケーションを持っていますが、Crystalレポートにアクセスできないため、実行に使用していた古いレポートを送信することはできません。同様に、データベースもどこにもセットアップされていないため、実行できません。そのため、レポートによって生成されたSQLコードを抽出して転送するだけの計画でした。

私たちは同じ問題を経験しましたが、解決策は実際にはかなり簡単です。元のデータソースにアクセスできない場合は、新しい「空の」データソース(ODBC接続など)を作成します。データソースへの接続が機能する限り(つまり、ある種の有効なデータソースです。これは正常に機能します。「SQLの表示」オプションを実行すると、レポートがこのデータソースを指すようになります。レポートを実際に実行しようとしない限り(そしてSQLのみを表示する場合)、操作は実行されません失敗しましたこれはとにかく私たちの状況でうまくいきました(Crystal Reports 2008)

(それが何らかの形で役立つ場合は、詳細を説明できます。)

18
Scott Barron

[データベース]> [データソースの場所の設定...]を選択して、既存のデータソースに関する詳細を確認できるはずです。

これにより、データソースの場所を変更できるようになるだけでなく、使用されているデータソースのタイプや、(ドライバーのタイプによっては)データベース名など、現在のデータソースに関する情報も表示されます。データソースがODBCである場合(ご想像のとおり)はあまり役に立たない可能性がありますが、ネイティブドライバーを使用している場合は、何か役立つものがあるかもしれません。

6
user359040

パスワードがなければ、どれだけできるかわかりません。 「SQLクエリの表示」では、まずレポートを実行してからSQLプランを生成する必要があるようです。

理想的ではありませんが、[データベース]> [ビジュアルリンクエキスパート]に移動して、少なくともテーブルとその結合方法を確認し、レコード選択式エディターに移動して、カスタムWHEREステートメントを確認できます。

5

CrystalレポートファイルでのコマンドのSQLの表示

レポートファイルだけがあり、レポートが使用する関連データベース構造がない場合があります。これは、模倣したい機能のサンプルレポートを処理する場合に一般的です。これは、レポートの基になるデータベース接続がない場合に、Crystal Reportの基になるコマンドのSQLを確認できるようにするための回避策です。本質的に、SQLを表示する前にダイアログボックスが満たされている必要があるため、実際にSQLコマンドに含まれるSQLで動作するものではなく、正当なデータソースでダイアログボックスをだます。

レポートでコマンドが使用されるのはなぜですか? Crystal Reportsにはテーブルをリンクする機能はありませんか? Crystal Reportが、Crystal Reports内のテーブルリンク機能には複雑すぎるレコードセットに基づいている場合、そのレポートは、代わりにSQLクエリに基づくことができ、通常は別のエディターツールで開発/テストされ、コマンドに貼り付けられます。これにより、高度なSQL関数を利用できます。

接続できるコンピュータ設定にまだデータソースがない場合は、最初にデータソースを作成する必要があります。

単純な場所に保存された単純なMicrosoft Access .mdbファイルで十分です。見つけやすいように、C:\ A_test\test.mdbというパスを配置しました。ファイルがない場合は、GoogleでサンプルのMDBファイルを探してダウンロードし、覚えやすい名前と場所で保存してください。 (実際にこのファイルを開くことはありませんが、接続するだけです。)ファイルを保存したら、ODBC Administratorを開き、新しいデータソースを作成します。( ODBC管理者が[スタート]> [タイプ] ODBC)からすばやく)[ユーザーDSN]タブで、[追加]ボタンをクリックします。ドライバーリストをMicrosoft Accessまでスクロールしますドライバー(* .mdb)を選択して[完了]ボタンをクリックします。[データソース名]ボックスに名前を入力します(MyTestを使用しました)。[選択]ボタンをクリックし、前の手順で保存したmdbファイルを選択して、[OK]をクリックします。もう一度[OK]をクリックします。新しいデータソースが、指定した名前で一覧表示されます。[OK]をクリックします。これで、次の手順に必要なデータソースができました。

  1. SQLコマンドを表示するCrystalレポートを開き、[データベースエキスパート]ボタンまたは[データベース]> [データベースエキスパートメニュー]をクリックします。
  2. [選択したテーブル]で、コマンドを右クリックして[コマンドの表示]を選択します
  3. データソース選択ボックスが表示されます。作成したデータソース(または既に使用しているデータソース)を選択し、[完了]ボタンをクリックします。 [コマンドの表示]ボックスが開き、左側のペインにSQLが表示されます。 SQLをお気に入りのテキストエディタにコピーします。
3
Phil B

元のソースDBかどうかに関係なく、Crystalレポートには接続するデータベースが必要です。

ローカルデータベースを作成するか、サーバーに格納されているデータベースを使用して、それをODBCデータソースに追加し、接続時に使用します。接続が成功すると、エラーなしでSQLクエリを表示できるはずです。 。

0
sqrepants