보고서 바인딩
"프로젝트 설정"에서 Web Form 또는 Windows Form에 CrystalReportViewer 컨트롤을 배치했고, 이전 단계에서는 프로젝트에 NorthwindCustomers 보고서를 추가했습니다.
이 부분에서는 NorthwindCustomers 보고서를 인스턴스화한 다음 CrystalReportViewer 컨트롤에 바인딩합니다. 그런 다음 매개 변수 필드에 대해 현재 값을 설정하지 않은 경우 보고서가 올바르게 표시되는지 테스트합니다.
다음과 같은 두 가지 방식으로 보고서를 인스턴스화하고 바인딩할 수 있습니다.
- 포함 보고서
- 비포함 보고서
아래 절차 중 필요한 단계를 하나만 선택합니다.
- 포함 보고서를 사용하는 경우 다음 절차에 따라 보고서를 포함 보고서로 인스턴스화합니다.
- 비포함 보고서를 사용하는 경우 다음 두 번째 절차에 따라 보고서를 비포함 보고서로 인스턴스화합니다.
NorthwindCustomers 보고서를 포함 보고서로 인스턴스화하고 CrystalReportViewer 컨트롤에 바인딩하려면
Web Form 또는 Windows Form을 엽니다.
보기 메뉴에서 코드를 클릭합니다.
northwindCustomersReport 변수를 사용하여 NorthwindCustomers 보고서 래퍼 클래스에 새로운 클래스 수준의 선언을 추가합니다. 액세스 한정자를 private으로 설정합니다.
Private northwindCustomersReport As NorthwindCustomers
private NorthwindCustomers northwindCustomersReport;
ConfigureCrystalReports() 메서드 내에서 보고서 래퍼 클래스를 인스턴스화합니다.
참고 ConfigureCrystalReports() 메서드는 "프로젝트 설정"에서 만들었습니다.
northwindCustomersReport = New NorthwindCustomers()
northwindCustomersReport = new NorthwindCustomers();
보고서를 인스턴스화하는 코드의 다음 줄에서 CrystalReportViewer 컨트롤의 ReportSource 속성을 인스턴스화된 보고서 클래스에 바인딩합니다(변수 이름: northwindCustomersReport).
myCrystalReportViewer.ReportSource = northwindCustomersReport
crystalReportViewer.ReportSource = northwindCustomersReport;
이제 프로젝트를 빌드하고 실행할 준비가 되었습니다. 아직 데이터베이스에 로그온하는 코드는 작성하지 않았으므로 보고서를 로드할 수 없습니다.
NorthwindCustomers 보고서를 비포함 보고서로 인스턴스화하고 CrystalReportViewer 컨트롤에 바인딩하려면
Web Form 또는 Windows Form을 엽니다.
보기 메뉴에서 코드를 클릭합니다.
northwindCustomersReport 변수를 사용하여 ReportDocument 보고서 래퍼 클래스에 새로운 클래스 수준의 선언을 추가합니다. 액세스 한정자를 private으로 설정합니다.
``` vb
Private northwindCustomersReport As ReportDocument
```
``` csharp
private ReportDocument northwindCustomersReport;
```
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\e2c9s1d7.alert_note(ko-kr,VS.90).gif" alt="Note" class="note" />참고</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>ReportDocument 클래스는 CrystalDecisions.CrystalReports.Engine 네임스페이스의 멤버입니다. 이 네임스페이스에 대한 "Imports" [Visual Basic] 또는 "using" [C#] 선언은 <a href="ms227453(v=vs.90).md">"프로젝트 설정"</a>에서 추가했습니다. ReportDocument를 인스턴스화하고 보고서를 네임스페이스에 로드하면 보고서를 포함하지 않고도 SDK를 통해 보고서에 액세스할 수 있습니다.</p></td>
</tr>
</tbody>
</table>
"프로젝트 설정"에서 만든 ConfigureCrystalReports() 메서드 내에서 ReportDocument 클래스를 인스턴스화합니다.
northwindCustomersReport = New ReportDocument()
northwindCustomersReport = new ReportDocument();
문자열 변수를 선언하고 이름을 reportPath로 지정한 다음 이 변수에 로컬 보고서의 런타임 경로를 할당합니다. 이 경로는 웹 사이트와 Windows 프로젝트 간에 다르게 결정됩니다.
웹 사이트의 경우 로컬 보고서 파일의 이름을 문자열 매개 변수로 Server.MapPath() 메서드에 전달합니다. 그러면 런타임에 로컬 보고서가 하드 드라이브 파일 디렉터리 경로에 매핑됩니다.
Dim reportPath As String = Server.MapPath("NorthwindCustomers.rpt")
string reportPath = Server.MapPath("NorthwindCustomers.rpt");
Windows 프로젝트의 경우 백슬래시를 사용하여 Application.StartupPath 속성과 로컬 보고서 파일 이름을 연결합니다. 그러면 보고서가 Windows 실행 파일과 동일한 디렉터리에 매핑됩니다.
참고 컴파일할 때 보고서를 실행 파일이 있는 디렉터리에 복사하십시오.
Dim reportPath As String = Application.StartupPath & "\" & "NorthwindCustomers.rpt"
string reportPath = Application.StartupPath + "\\" + "NorthwindCustomers.rpt";
ReportDocument 인스턴스의 Load() 메서드를 호출하여 reportPath 문자열 변수를 전달합니다.
northwindCustomersReport.Load(reportPath)
northwindCustomersReport.Load(reportPath);
CrystalReportViewer의 ReportSource 속성을 ReportDocument 인스턴스에 바인딩합니다.
myCrystalReportViewer.ReportSource = northwindCustomersReport
crystalReportViewer.ReportSource = northwindCustomersReport;
NorthwindCustomers 보고서가 로드되는지 테스트하려면
인스턴스화하기로 선택한 대상이 포함 보고서 클래스이든 ReportDocument 클래스를 통한 비포함 보고서 클래스이든 상관없이 여기에 사용되는 변수 이름은 northwindCustomersReport로 동일합니다. 이렇게 하면 이후의 절차에서 공통 코드 집합을 사용할 수 있습니다.
이제 프로젝트를 빌드하고 실행할 준비가 되었습니다. 아직 데이터베이스에 로그온하는 코드는 작성하지 않았으므로 보고서를 로드할 수 없습니다.
빌드 메뉴에서 솔루션 빌드를 선택합니다.
빌드 오류가 발생하면 바로 수정합니다.
Windows 프로젝트에서 비포함 보고서를 사용하는 경우 \bin\ [Visual Basic] 또는 \bin\debug\ [C#] 하위 디렉터리에서 컴파일된 Windows 실행 파일을 찾은 다음 이 하위 디렉터리로 보고서를 복사합니다.
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\e2c9s1d7.alert_note(ko-kr,VS.90).gif" alt="Note" class="note" />참고</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>런타임에 비포함 보고서를 Windows 실행 파일에서 로드하도록 하려면 보고서가 Windows 실행 파일과 동일한 디렉터리에 저장되어 있어야 합니다.</p></td>
</tr>
</tbody>
</table>
디버그 메뉴에서 시작을 클릭합니다.
데이터베이스 로그온 코드가 추가되지 않았으므로 NorthwindCustomers 보고서가 표시되지 않습니다.
참고 사용 중인 Crystal Reports의 버전에 따라 결과가 다를 수 있습니다. 예를 들어 Crystal Reports 10 이상을 설치한 경우 해당 보고서에 대한 데이터베이스 로그온 정보를 입력하라는 폼이 표시됩니다. 이는 Crystal Reports Developer의 새로운 기능입니다. 이전 버전의 Crystal Reports에서는 예외가 Throw됩니다. 어떠한 경우이건 다음 단계의 절차에 따라 응용 프로그램이 완전하게 작동하도록 만들어야 합니다.
Visual Studio로 돌아간 다음 중지를 클릭하여 디버그 모드를 종료합니다.