0

私は2つのアプリケーションを持っています:

    1.レポート用のデータを準備するアプリ-C#(.Net 1.1)
    2.レポートを表示するアプリ-C++(多分)

最初のアプリは、レポートファイル名、レポートパラメーターなどのパラメーターをコマンドライン経由で2番目のアプリに送信します。次に、2番目のアプリは準備されたレポートを表示します。

ここで、いくつかのレポートフィールドを変更したいと思います。最初のアプリの私のコード:

ReportDocument rDoc = new ReportDocument();
rDoc.Load(@"D:\reports\report_1.rpt");
rDoc.Database.Tables[0].Location = "newDBName.schema.oldTableName";
rDoc.SaveAs(@"D:\reports\report_1_modif.rpt",ReportFileFormat.VSNetFileFormat);

アーカイブデータベースからデータを取得したいので、rptファイルを変更したい。「CrystalDecisions.CrystalReports.Engine」の参照バージョンは9.1.5000.0です。そのため、バージョンに互換性がないため、2番目のアプリは変更されたrptファイルを使用できません。2番目のアプリは8.5ファイル形式でのみ動作します。

CR Developerでrptファイルを開くと、手動で場所を変更して8.5ファイル形式で保存できます。この場合、2番目のプログラムは通常変更されたファイルで動作します。

だから私の質問は:「.NetC#でrptファイル8.5を開き、変更して別の名前で8.5形式で保存するにはどうすればよいですか?」たぶん私はいくつかのアンマネージコードを使用する必要がありますか?

CrystalReports8.5は2001年にリリースされました。.Netは2002年にリリースされました。

4

1 に答える 1

0

問題を解決しました。私のアプローチ:

  1. C# コードでは、すべてのユーザーが「レポートを表示」をクリックした後、DB 内のシノニムのセットを更新します。更新後、各シノニムは同じ名前のままですが、別のデータベースの別のテーブルに従います。
  2. CR 8.5 ファイルを手動で変更しました。a) ODBC レイヤーがシノニムをサポートしていないため、接続タイプを OLE DB (ネイティブ SQL クライアント) に変更しました。b) シノニムを完全なテーブル名ではなく、テーブルの場所として設定しました。
  3. 課題解決!

アップデート。OLE DB を使用するには、p2soledb.dll が必要です。

于 2012-10-10T04:32:55.790 に答える