在.Net c#中编辑Crystal Report 8.5文件

时间:2012-10-04 11:08:52

标签: c# .net crystal-reports unmanaged crystal-reports-8.5

我有2个申请:

    1。用于准备报告数据的应用程序 - C#(。Net 1.1)
    2。用于显示报告的应用程序 - C ++(可能)

第一个应用程序发送参数,例如报告文件名,通过命令行向第二个应用程序报告参数。然后第二个应用程序显示准备好的报告。

现在我想更改一些报告字段。我在第一个应用程序中的代码:

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。 因此,由于版本不兼容,第二个应用程序无法使用已修改的rpt文件。第二个应用程序只能使用8.5文件格式。

当我在CR Developer中打开rpt文件时,我可以手动更改位置并以8.5文件格式保存。在这种情况下,第二个程序通常适用于修改过的文件。

所以我的问题是:“我怎么能在.Net C#open rpt文件8.5中,修改并以8.5格式保存另一个名字?”。也许我应该使用一些非托管代码?

Crystal Reports 8.5于2001年发布。2002年.Net。

1 个答案:

答案 0 :(得分:0)

我解决了问题。我的方法:

  1. 在C#代码中,我们在每个用户点击“显示报告”后更新数据库中的同义词集。更新后,每个同义词仍然具有相同的名称,但跟随到不同数据库中的另一个表。
  2. 我们手工修改了CR 8.5文件:a)将连接类型更改为OLE DB(Native SQL Client),因为ODBC层不支持同义词b)将同义词设置为表位置而不是完整的表名。
  3. 任务已解决!
  4. UPD。我们需要p2soledb.dll来使用OLE DB。