Правильный способ экспорта пакетов XML в PDF с помощью Crystal Reports? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть следующая функция, которая запускается внутри al oop, для каждого xml файла в указанном каталоге:

 Public Function createReport(ByVal rptName As String, ByVal pdfName As String, ByVal xmlInput As String) As String

        Dim ds As New DataSet
        Dim cr As New ReportDocument
        Dim CRfile As String = crystalFilePath & rptName & "Template.rpt"
        ds.ReadXml(xmlInput)

        cr.FileName = CRfile
        cr.DataSourceConnections.Clear()

        cr.SetDataSource(ds)
        cr.Refresh()
        cr.VerifyDatabase()

        Dim pdfPath As String = outputDirectory & rptName & "\pdf\" & pdfName & ".pdf"

        Try
            cr.ExportToDisk(ExportFormatType.PortableDocFormat, pdfPath)
        Catch ex As Exception
            If Not ex.InnerException Is Nothing Then
                Return pdfName & "<br /> <strong>Error:</strong> " & ex.InnerException.ToString
            Else
                Return pdfName & "<br /> <strong>Error:</strong> Unknown error (no inner exception text)"
            End If

        End Try

        cr.Close()
        cr.Dispose()
        GC.Collect()


        Return "Success"

    End Function

Иногда я получаю сообщение об ошибке

Достигнут максимальный лимит заданий на обработку отчетов, настроенный вашим системным администратором

Я подозреваю, что я неправильно распределяю память в каждой итерации?

1 Ответ

0 голосов
/ 21 апреля 2020

Эта ошибка предназначена для того, чтобы помочь разработчикам и пользователям знать, когда они создают большую нагрузку для отчетов на сервере, на котором выполняется отчет. Я рекомендую прочитать этот пост в блоге , чтобы узнать, как устранить ошибку.

По умолчанию существует ограничение в 75 заданий на печать отчетов. Помните, что вложенные отчеты, размещенные в вашем основном отчете, учитываются в этом пределе. Таким образом, один отпечаток отчета с 4 подотчетами будет считаться как 5 отпечатков к пределу. Для увеличения этого предела можно использовать редактирование реестра, но на компьютере, на котором запущен отчет, могут возникнуть проблемы с производительностью, если вы увеличите предел. В прошлом я сталкивался с ошибками нехватки памяти как прямой результат установки слишком высокого предела для машины, на которой выполняются отчеты.

В этом блоге также обсуждаются некоторые методы кодирования, которые вы можете использовать для очистки объектов и темпов. файлы способами, которые могут помочь вам решить вашу проблему. Я рекомендую исчерпать все практики кодирования, прежде чем пытаться решить проблему редактирования реестра.

...