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는 설정하지 않습니다. 또한 데이터 소스의 데이터베이스에 연결할 수 있으므로 연결 문자열이 올바른 것으로 확신합니다. 어떤 도움을 주시면 감사하겠습니다.
제발 당신은 모든 옵션을 어떻게 구성했는지 말해 줄 수 있습니까? –