0

Report Viewer を使用して Web サイト経由で実行しようとしている単一の Crystal Report と、(同じ .rpt を使用して) エクスポート オプションを使用してストリームまたはファイルに直接レポートを生成するバックグラウンド プロセス経由で実行しようとしている Crystal Report があります。

データベースは使用していませんが、xml スキーマ ファイルを作成し、固有のユーザー データに基づいてレポートに読み込む xml データ ファイルを生成しています。

レポートを作成するときに、ADO.NET(XML) 接続を作成して設計し、スキーマ ファイルを参照しました (すべて VS 2012 内)。

実行時には、.net DataSet オブジェクトを使用し、ReadXmlSchema メソッドと ReadXml メソッドを使用してレポート データを取得し、ReportDocument オブジェクトのデータソースを設定するだけです。

これはすべて、Report Viewer を使用する Web アプリケーションでうまく機能しました。作業コードは次のとおりです。

    ReportDocument report = new ReportDocument();
    report.Load(reportPath);

    DataSet reportData = new DataSet();

    reportData.ReadXmlSchema("MySchema.xml");
    reportData.ReadXml("SampleData1.xml");

    report.SetDataSource(reportData);

    CrystalReportViewer1.ReportSource = report;

私の問題/質問は、レポート ビューアーを使用せずにプログラムでこれを実行し、PDF を生成する方法です。基本的に上記と同じコードから、Report Viewer の部分を除いて、エクスポート オプションの 1 つを追加します。長時間バックグラウンド プロセスを実行しているため、このレポートを PDF として生成した電子メールに添付したいと考えています。

Web バージョンと同じ方法を使用できますが、SetDataSource 行に到達してそれを自分の DataSet に設定しようとすると、「不明なデータベース接続エラー...」というエラーが表示され、 SetDatabaseLogon メソッド。

データベースに接続していないときに、Crystal Reports が SetDatabaseLogon メソッドの方法で期待することを理解しようとしています。.RPT ファイル内の元の ADO.NET(XML) 接続が正当なデータベース接続であると想定している場合、ログオン パラメータは何ですか? ただのファイルです。ユーザー名、パスワードなどはありません。

Report Viewer を使用せずに、既存の Crystal Report から直接 PDF に変換するより良い方法はありますか? さまざまなリンクを見てきましたが、何らかの接続文字列を含まないものは何も見つかりませんでした。SetDatabaseLogin を使用する必要がある場合、XML ファイルのみを使用する場合、どの値が機能しますか?

情報やリンクをありがとう!

編集:「不明なデータベース コネクタ エラー」(前に述べたように接続ではありません) を見ると、実際には一時フォルダー内の .RPT が表示されており、読み込み元だと思っていたリモートの場所には表示されていないことがわかります。多分これが問題ですか?

4

3 に答える 3

1

次のようなことを試しましたか:

Report.ExportToDisk(ExportFormatType.PortableDocFormat, Server.MapPath("Foldername/Reportname.pdf"));
于 2013-10-09T15:55:33.547 に答える
0

このコードを試してください:

                report.ExportOptions.DestinationType = CRExportDestinationType.crEDTDiskFile;
                report.ExportOptions.FormatType = CRExportFormatType.crEFTPortableDocFormat;
                DiskFileDestinationOptions fileOption = new DiskFileDestinationOptions();
                fileOption.DiskFileName = "Test.pdf";
                report.ExportOptions.DiskFileName = fileOption.DiskFileName;
                report.Export(false);
于 2013-10-12T13:48:34.640 に答える