2013-08-21 2 views
0

Crystal Reports를 호출하고 검색하는 "개념 증명"콘솔 응용 프로그램을 작성하고 있습니다. ReportViewer를 사용하지 않고 대신 스트림을 통해 보고서를 검색하는 방법을 원합니다. CrystalDecisions.CrystalReports.Engine 및 CrystalDecisions.Shared와 같은 CRforVS 재배포 라이브러리를 사용하고 있습니다. 내 코드는 다음과 같습니다.뷰어를 사용하지 않고 C# 통과 매개 변수에서 Crystal 보고서를 실행하십시오.

static void Main(string[] args) 
{ 
    var x = new ReportDocument(); 
    x.Load("[REPORT PATH]"); 
    x.SetParameterValue("[PARAM NAME]", "[PARAM VALUE]"); 
    // set parameter values 

    SetDbLoginForReport(x); 

    Sections sections = x.ReportDefinition.Sections; 
    foreach (Section section in sections) 
    { 
     ReportObjects reportObjects = section.ReportObjects; 
     foreach (ReportObject reportObject in reportObjects) 
     { 
      if (reportObject.Kind == ReportObjectKind.SubreportObject) 
      { 
       SubreportObject subreportObject = (SubreportObject)reportObject; 
       ReportDocument subReportDocument = subreportObject.OpenSubreport(subreportObject.SubreportName); 
       SetDbLoginForReport(subReportDocument); 
      } 
     } 
    } 

    var s = x.ExportToStream(ExportFormatType.CrystalReport); 

} 

private static void SetDbLoginForReport(ReportDocument document) 
{ 
    foreach (var table in document.Database.Tables) 
    { 
     var conn = new ConnectionInfo(); 
     var myTable = table as Table; 
     var myTableLogonInfo = myTable.LogOnInfo; 
     conn.ServerName = ""; 
     conn.DatabaseName = ""; 
     conn.UserID = ""; 
     conn.Password = ""; 
     myTableLogonInfo.ConnectionInfo = conn; 
     myTable.ApplyLogOnInfo(myTableLogonInfo); 
    } 
} 

ExportToStream에서 "연결을 열지 못했습니다."오류 메시지가 표시됩니다.

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.ReportDocument.ExportToStream(ExportOptions options) 
    at CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream(ExportFormatType formatType) 
    at ConsoleApplication2.Program.Main(String[] args) in C:\Users\paul.welbourne\Documents\Visual Studio 2010\Projects\ConsoleApplication2\ConsoleApplication2\Program.cs:line 41 
    at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
    at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 

Crystal Report에 이미 설정된 DataSources는 설정하지 않습니다. 또한 데이터 소스의 데이터베이스에 연결할 수 있으므로 연결 문자열이 올바른 것으로 확신합니다. 어떤 도움을 주시면 감사하겠습니다.

답변

0

마침내이 문제에 대한 해결책을 찾았습니다. 보고서에 대한 데이터베이스 연결을 위해 프로그램 -> 관리 도구 -> ODBC 데이터 소스에서 시스템 DNS를 만들어야했습니다.

+0

제발 당신은 모든 옵션을 어떻게 구성했는지 말해 줄 수 있습니까? –

관련 문제