0

私のアプリケーションには、PDFに変換するためのコードがいくつかあります。デバッグモードではすべてが正常に機能していますが、サーバーでテストすると、データベースへのログオンに失敗し続けます。ログインとパスワードが100%OKであるために、なぜエラーが発生するのかわかりません。

サーバーがレポートを送信するための2つの方法を試しました

SetCrystalReportFilePath(Server.MapPath("~/MemberPages/Report.rpt"))
SetPdfDestinationFilePath(Server.MapPath("~/MemberPages/Report_" & Report & ".pdf"))
SetRecordSelectionFormula("{Report.Report_id} =" & ID)
Transfer()



SetCrystalReportFilePath("C:\inetpub\wwwroot\Werkbon.rpt")
SetPdfDestinationFilePath("C:\inetpub\wwwroot\Werkbon_" & werkbonnr & ".pdf")
SetRecordSelectionFormula("{werkbon.werkbon_id} =" & werkbonnr)
Transfer()

Dim ConInfo As New CrystalDecisions.Shared.TableLogOnInfo
Dim oRDoc As New ReportDocument
Dim expo As New ExportOptions
Dim sRecSelFormula As String
Dim oDfDopt As New DiskFileDestinationOptions
Dim strCrystalReportFilePath As String
Dim strPdfFileDestinationPath As String

Public Function SetCrystalReportFilePath(ByVal CrystalReportFileNameFullPath As String)
    strCrystalReportFilePath = CrystalReportFileNameFullPath
End Function

Public Function SetPdfDestinationFilePath(ByVal pdfFileNameFullPath As String)
    strPdfFileDestinationPath = pdfFileNameFullPath
End Function

Public Function SetRecordSelectionFormula(ByVal recSelFormula As String)
    sRecSelFormula = recSelFormula
End Function

Public Function Transfer()
    oRDoc.Load(strCrystalReportFilePath)
    oRDoc.RecordSelectionFormula = sRecSelFormula
    oDfDopt.DiskFileName = strPdfFileDestinationPath
    expo = oRDoc.ExportOptions
    expo.ExportDestinationType = ExportDestinationType.DiskFile
    expo.ExportFormatType = ExportFormatType.PortableDocFormat
    expo.DestinationOptions = oDfDopt
    oRDoc.SetDatabaseLogon("databasename", "password")
    oRDoc.Export()
End Function
4

1 に答える 1

0

クリスタルは、接続情報を交換する場合に非常に特別です(特に、サブレポートがある場合はそれを使用します)。彼らが何年にもわたって実際に改善していないのは、常に痛い場所でした。新しい接続を簡単にロードして交換するために(VB.Netで)作成した拡張メソッドを含むブログエントリがあります(通常、レポートの接続にはADOを使用します)。拡張メソッドはこのリンクにあります(以下はそれらの使用方法の例です。ASP.NETからこれを使用している場合はSystem.Diagnostics行を無視してください)。お役に立てれば。

http://www.blakepell.com/Blog/?p=487

    Using rd As New ReportDocument
        rd.Load("C:\Temp\CrystalReports\InternalAccountReport.rpt")
        rd.ApplyNewServer("serverName or DSN", "databaseUsername", "databasePassword")
        rd.ApplyParameters("AccountNumber=038PQRX922;", True)
        rd.ExportToDisk(ExportFormatType.PortableDocFormat, "c:\temp\test.pdf")
        rd.Close()
    End Using

    System.Diagnostics.Process.Start("c:\temp\test.pdf")
于 2012-09-06T15:01:35.253 に答える