2016-08-24 160 views
0

在示例控制檯應用程序中,我將XML文件讀入數據集,將其提供給Crystal Reports,並使用ExportToPDF()方法將報告導出爲PDF。我的應用程序失敗,出現「數據庫登錄失敗」錯誤。在MSDNSCN發現的類似問題似乎不起作用。ExporttoPDF()失敗,數據庫登錄失敗

我碰到下面的錯誤和堆棧跟蹤我的日誌:

ConsolePDF Exception: Database logon failed. 
ConsolePDF Inner Exception: System.Runtime.InteropServices.COMException (0x8004100F): Database logon failed. 
    at CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.Export(ExportOptions pExportOptions, RequestContext pRequestContext) 
    at CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext) 
ConsolePDF Stack Trace: at CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e) 
    at CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext) 
    at CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext) 
    at CrystalDecisions.CrystalReports.Engine.FormatEngine.Export(ExportRequestContext reqContext) 
    at CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToDisk(ExportFormatType formatType, String fileName) 
    at ConsolePDF.Program.ConsolePDF() in D:\user\ConsolePDF2\ConsolePDF\Program.cs:line 519 

在節目中,我讀一個XML文件,加載到數據集並提供給水晶的報表(.rpt )文件。在report.ExportToDisk(...)處引發異常:

try 
{ 
    DataSet ds = new DataSet(); 
    ds.ReadXml(fileName, XmlReadMode.ReadSchema); 
    string pdfFileName = filename + ".pdf"; 
    ReportDocument report = new ReportDocument(); 
    String rptLoc = reportLocation.Replace(@"\/", @"\"); 
    report.Load(rptLoc); 

    ds.WriteXml(@"C:\Temp\ReportPDFSOXML.xml", XmlWriteMode.WriteSchema); 

    string fullName = fileDir + pdfFileName; 
    report.SetDatabaseLogon("user","password","server","database"); 

    // Next line is 519 - where exception was raised 
    report.ExportToDisk(ExportFormatType.PortableDocFormat, fullName); 
    report.Close(); 
    report.Dispose();        
} 
catch (Exception ex) 
{ 
    logger.Info(ex.Message, "ConsolePDF Exception"); 
    if (ex.InnerException != null) 
    { 
     logger.Info(ex.InnerException.ToString(), "ConsolePDF Inner Exception"); 
    } 
    if (ex.StackTrace.ToString() != null) 
    { 
     logger.Info(ex.StackTrace.ToString(), "ConsolePDF Stack Trace"); 
    } 
    connPool.Dispose(); 
    sessionConn.Dispose(); 
    Environment.Exit(0); 
} 

如何才能擺脫此錯誤?

回答

0

但是你從來沒有在這段代碼中使用你的數據集!嘗試添加這樣的行:

//Your Line 
    ds.WriteXml(@"C:\Temp\ReportPDFSOXML.xml", XmlWriteMode.WriteSchema); 
    //Set the report datasource, using your ds 
    report.SetDataSource(ds); 

然後,你檢查了你的登錄/數據庫/服務器信息兩次?問題可能就在那裏!

Regards,