2013-07-04 3 views
1

이 보고서를 pdf로 내보낼 수 없습니다. 전에 여러 번 해봤지만 벽돌 벽에 부딪 혔습니다. 어떤 도움을 주시면 감사하겠습니다.asp.net Crystal Reports 데이터베이스 로그온에 실패했습니다.

이것은 Windows 7 64 비트 시스템에 있습니다.

설명 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

Exception Details: System.Runtime.InteropServices.COMException: Database logon failed. 

Source Error: 



Line 25:   exportOpts.ExportFormatType = ExportFormatType.PortableDocFormat 
Line 26:   exportOpts.ExportFormatOptions = pdfOpts 
Line 27:   report.ExportToHttpResponse(exportOpts, Response, False, "") 
Line 28: 
Line 29:  End Sub 

Stack Trace: 



[COMException (0x8004100f): Database logon failed.] 
    CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.Export(ExportOptions pExportOptions, RequestContext pRequestContext) +0 
    CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext) +519 

[LogOnException: Database logon failed.] 
    CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e) +1243 
    CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext) +621 
    CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext) +1201 
    CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream(ExportOptions options) +150 
    CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToHttpResponse(ExportOptions options, HttpResponse response, Boolean asAttachment, String attachmentName) +212 
    reports_CreateReport.generateReport(DataSet ds, String reportpath, ArrayList params) in C:\Users\boruch\Dropbox\Korns-ConnectionStr\reports\CreateReport.aspx.vb:27 
    reports_CreateReport.btn_GenReport_Click(Object sender, EventArgs e) in C:\Users\boruch\Dropbox\Korns-ConnectionStr\reports\CreateReport.aspx.vb:58 
    System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9552602 
    System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103 
    System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 
    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724 




-------------------------------------------------------------------------------- 
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18044 
+0

크리스탈 보고서를 만드는 데 사용 된 모델은 무엇입니까? 당기거나 푸시? – adatapost

+0

메신저를 사용하여; 보고서를 디자인하는 동안 데이터 집합을 사용하고 코드 비하인드로 데이터 집합을 채우고이를 보고서 소스로 설정합니다. – boruchsiper

+0

이 보고서 만 PDF로 내보내기에 실패 했습니까? 아니면 이와 비슷한 행동을하는 다른 보고서가 있습니까? 일반적인 문제는 보고서의 모든 데이터 연결 (즉, 포함 된 보고서에 대한 데이터 연결)에서 데이터베이스 연결 세부 정보가 변경되지 않는다는 것입니다. – Zec

답변

3

나는 내가 가지고있는 것을 게시하여 아마도 도움이 될 것입니다. 우리는 크리스탈을 너무 포기했기 때문에 포기했다. (수출이 실패하고 처음으로 앱이 종료 될 때까지 매번 작동 할 것이라고 생각한다.) SAP는 기본적으로 우리가 하이킹. 그래서 우리는했다. 우리는 SSRS로 전환했고 훨씬 더 행복합니다 ...하지만 나는 빗 나갑니다.

많은 코드가 표시되지 않으므로 내가 어떻게 작동하는지 알 수 없습니다. 또한, 내 C#, 그래서 당신이 변환해야합니다 ...하지만 잘하면이 문제의 어딘가에 문제에 대한 해결책을 찾을 수 있습니다.

ReportDocument rd = new ReportDocument(); 
rd.Load(rptFile); 

자격 증명 설정

ConnectionInfo connectInfo = new ConnectionInfo() 
{ 
    ServerName = dbServer, 
    DatabaseName = "", 
    UserID = userId, 
    Password = password 
}; 
rd.SetDatabaseLogon(userId, password); 
foreach (Table tbl in rd.Database.Tables) 
{ 
    tbl.LogOnInfo.ConnectionInfo = connectInfo; 
    tbl.ApplyLogOnInfo(tbl.LogOnInfo); 
} 

그런 설정 수출 :

DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions(); 
ExportOptions CrExportOptions; 
PdfRtfWordFormatOptions pdfFormatOptions = new PdfRtfWordFormatOptions(); 
CrDiskFileDestinationOptions.DiskFileName = outputPath; 
CrExportOptions = rd.ExportOptions; 
{ 
    CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile; 
    CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat; 
    CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions; 
    CrExportOptions.FormatOptions = pdfFormatOptions; 
} 
나는

로드 문서 ... 자격 증명의 설정에 될 것 상상

공급 보고서 매개 변수

SetCurrentValuesForParameterField(rd, "IP_COMP_CODE", cc); 
SetCurrentValuesForParameterField(rd, "IP_YEAR", yr); 
SetCurrentValuesForParameterField(rd, "IP_WEEK", wk); 

수출 ...

rd.Export(); 

그리고 SetCurrentValuesForParameterField 대한 구현 :

private void SetCurrentValuesForParameterField(ReportDocument reportDocument, string paramFieldName, int value) 
{ 
    ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue(); 
    parameterDiscreteValue.Value = value; 

    ParameterValues currentParameterValues = new ParameterValues(); 
    currentParameterValues.Add(parameterDiscreteValue); 

    reportDocument.DataDefinition.ParameterFields[paramFieldName].ApplyCurrentValues(currentParameterValues); 
} 
+0

내 시간의 저장된 몇. Upvoted. @ Pete에게 감사합니다. 그러나 메서드에서 매개 변수를 전달하는 것은 약간 복잡합니다. 나는'rd.SetParameterValue ("ParameterName", parameterValue)와 같이 더 간단한 것을 발견했다; "나는 이것이 오래된 게시물이라는 것을 알고있다. 하지만 여전히 다른 사람이 도움이 될 수 있습니다. – CoffeeSipper

0

나도이 오류있어 .. I했다 일종의 그것을 내 데이터 테이블 값 체크인하여 .. 하나의 데이터 테이블에 대한 쿼리를 사용하지 않았습니다.

예 : Crystal Reports 데이터 세트에 11 개의 DataTable이 있습니다. 데이터 테이블 11 .. 에 대한 스피 내가 그것을 체크 아웃하고 수정 한 후 .. 이제 내 엑셀 및 PDF가 .. 실패 오류에 대한 데이터베이스 로그를받지 않고 제대로 작동이

... 그것은 guyzzz 유 유용 할 수있다 희망
관련 문제