Hi,
We are currently using the Crystal Reports 2008 runtime SP1 with our .NET application to generate Crystal Reports. Some of our clients complained about the export to RTF and XLS bug associated with the runtime 2008 SP1. In order to provide a fix to them, we installed and tested the runtime 2008 SP3 (as well as the Fix Pack 3.1) but it is unfortunately not a working solution. It successfully generates a Crystal Reports once only and then crashes for any other attempt (same report or different report).
In order to isolate the problem we wrote a little program in Visual Studio that reproduces a simplified code sequence of the calls we make to the Crystal runtime. It always crashes on the second attempt to generate a report. It seems to be a buffer overrun, that occurs in a thread other than the main thread.
We have proceeded to testing on Windows XP and on Windows 7. Same problem all the time. We are using .NET. As for the runtime 2008 SP3, we made our own solutions from the merge modules, and also installed the full redistribuable build, always the same issue.
Here is the main part of the C++ code :
ReportDocument^ RD = nullptr; try { RD = gcnew ReportDocument(); RD->FileName = gcnew System::String("C:\\AbsStat.rpt"); Database^ ReportDatabase = RD->Database; Tables^ ReportTables = ReportDatabase->Tables; System::String^ SourceFileName = gcnew System::String("C:\\AbsStatb.xml"); for (int i = 0; i < ReportTables->Count; i++) { Table^ ReportTable = ReportTables<i>; // Set the source file name to the table ReportTable->Location = SourceFileName; // Test the connectivity of this data source if (!ReportTable->TestConnectivity()) return (false); } System::String^ FileName = gcnew System::String("Alex.pdf"); RD->ExportToDisk(CrystalDecisions::Shared::ExportFormatType::PortableDocFormat, FileName); } catch (System::Exception^ e) { return (false); } finally { if (RD != nullptr) { RD->Close();
I can provide the complete Visual Studio solution to reproduce the problem if needed. Any solution ? Thanks.