0
在示例控制檯應用程序中,我將XML文件讀入數據集,將其提供給Crystal Reports,並使用ExportToPDF()方法將報告導出爲PDF。我的應用程序失敗,出現「數據庫登錄失敗」錯誤。在MSDN和SCN發現的類似問題似乎不起作用。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);
}
如何才能擺脫此錯誤?