Crystal Report: ошибка Память заполнена на report.Export () - PullRequest
0 голосов
/ 07 апреля 2020

Я использую Crystal Report (v13.0.16.1954), чтобы экспортировать счет, сделанный с моим программным обеспечением, в pdf. Мое программное обеспечение сделано в C# с VS2015.

Мне нужно экспортировать весь счет (несколько тысяч) в pdf, но когда я попытался, примерно через 2 с половиной, я получил либо "ошибку в файле { filename_in_temp} .rpt запрос не может быть отправлен в фоновой обработке "или" Память заполнена Невозможно экспортировать отчет ".

Я пытался удалить другую вещь (изображение, выражение и т. д. c) до точки, где Я попытался «экспортировать» отчет, в котором ничего не было (я сделал новый отчет, ничего не сделал в нем и просто попытался экспортировать его несколько тысяч раз подряд). И все та же ошибка переполнения памяти.

Вот код:

private void makeReport()
{
   report = new ReportDocument();
   report.Load(reportPath);

   report = dataToReport(report);
   report.SetParameterValue("NUM", num);
   report.SetParameterValue("NUM_AV", num_av);


   ExportOptions CrExportOptions;
   DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
   PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
   CrDiskFileDestinationOptions.DiskFileName = destPath;
   CrExportOptions = report.ExportOptions;
   {
       CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
       CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
       CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
       CrExportOptions.FormatOptions = CrFormatTypeOptions;
   }
   try
   {
       report.Export();
   }
   catch (Exception ex)
   {
       throw ex;
   }
   report.Close();
   report.Dispose();
}

private ReportDocument dataToReport(ReportDocument report)
{
    ConnectionInfo ciReportConnection = new ConnectionInfo();
    ciReportConnection.ServerName = server;
    ciReportConnection.DatabaseName = db;
    ciReportConnection.UserID = user;
    ciReportConnection.Password = pwd;

    foreach (Table table in report.Database.Tables)
    {
        table.LogOnInfo.ConnectionInfo = ciReportConnection;
        table.ApplyLogOnInfo(table.LogOnInfo);
    }

    foreach (ReportDocument subrep in report.Subreports)
    {
        foreach (Table table in subrep.Database.Tables)
        {
           table.LogOnInfo.ConnectionInfo = ciReportConnection;
           table.ApplyLogOnInfo(table.LogOnInfo);
        }
    }
    return report;
}

Примечание: строка "SetParameterValue" комментируется или удаляется при тестировании с пустым отчетом.

Я уже видел других людей с этой ошибкой, но ни у одного из них нет такого случая, как у меня:

https://answers.sap.com/questions/7111653/memory-full-error-while-exporting-report-to-pdf-fo.html

asp. net c# Экспорт отчета Crystal в PDF-память заполнена

Ошибка переполнения памяти при экспорте отчета Crystal в PDF

Есть предложения, чтобы это исправить?

...