[.NET] 크리스탈 리포트 생성 및 호출하기
이 자료는 서린정보기술(주)에서 발체한 내용입니다. 그럼...
이번호에서는 지난호에 생성한 ASP.NET 프로젝트인 Sample_CrystalReport에서 크리스탈 리포트를 생성한 후 웹페이지에 리포트를 나타내 보기로 하겠습니다.
무조건 따라하기
[1 단계] 크리스탈 리포트 추가 및 생성
[그림 부록A.6] ASP.NET 프로젝트에서 새항목 추가하기
[그림 부록A.6 설명]
크리스탈 리포트를 생성하기위해서 "새항목 추가"를 선택한다.
[그림 부록A.7] 템플릿에서 "Crystal Report" 선택 추가
[그림 부록A.7 설명]
그림 우측의 템플릿에서 번호j과 같이"Crystal Report"항목을 선택하고, 번호k번 항목에 리포트 이름을 적은후 번호l번의 "열기" 버튼을 클릭한다.
[2 단계] 크리스탈 리포트 형식 선택
[그림 부록A.8] 크리스탈 리포트 만들기 초기화면
[그림 부록A.8 설명]
크리스탈 리포트를 어떤 형태 및 양식으로 작성할 것 인지를 선택하는 초기화면이다. 번호와 같이 j "보고서 전문가 사용" k "표준" 형식을 선택한 후 "확인'버튼을 클릭한다.
[3 단계] OLE DB 연결
[그림 부록A.9] OLE DB 연결 화면
[그림 부록A.9 설명]
리포팅 하고자하는 DB 서버의 DB를 선택하여 연결시키는 화면으로 번호j 항목의 좌측 확장부호"+"를 클릭한다.
[그림 부록A.10] DB 드라이버 선택 화면
[그림 부록A.10 설명]
DB 드라이버 공급자를 선택한다. 여기에서는 MS-SQL 2000을 사용하는 관계로 "Microsoft OLE DB Provider for SQL Server" 선택
[그림 부록A.11] DB 서버 및 DB 연결 정보 Setting 화면
[그림 부록A.11 설명]
리포트에 연결될 테이블이 존재하는 DB 서버의 연결 정보를 셋팅해 준 후 "다음" 클릭
[그림 부록A.12] 테이블 선택 화면
[그림 부록A.12 설명]
실제적으로 리포팅할 테이블을 번호j과 같이 선택한 후 번호k에 있는 "테이블 삽입" 버튼을 클릭하면 번호l과 같이 선택한 테이블 "LoginID_TB" 이 나타난다. "다음" 버튼 클릭.
[그림 부록A.13] 테이블의 컬럼 선택 화면
[그림 부록A.13 설명]
그림 좌측j 과같이 선택하고자하는 테이블의 컬럼리스트들 중에서 리포트에 나타낼 컬럼들을 선택한 후 번호k의 "추가" 버튼을 클릭하면 그림 우측 번호l과 같이 리포트에 나타낼 리스트에 추가된다.
[그림 부록A.14] 리포트에서 그룹핑할 컬럼 선택 화면
[그림 부록A.14 설명]
그림 좌측의 보고서에 나타낼 컬럼들중에서 그룹핑할 컬럼을 선택한 후 "추가" 버튼 클릭.
[그림 부록A.15] 리포트에서 합계를 구할 컬럼 선택 화면
[그림 부록A.15 설명]
그림 좌측의 보고서에 나타낼 컬럼들중에서 하단부에 합계를 나타낼 필드가 있는경우, 해당 컬럼을 선택한 후 "추가" 버튼 클릭
[그림 부록A.16] 리포트 그룹 정렬 화면
[그림 부록A.16 설명]리포트의 그룹을 값에따라 정렬시킨다
[그림 부록A.17] 리포트 그래픽 선택 화면
[그림 부록A.17 설명]
리포트를 텍스트가 아닌 그래픽으로 나타내고자 할경우, 표현 형식을 선택할 수 있다.
[그림 부록A.18] 데이터 하위 집합 선택 화면
[그림 부록A.18 설명]
옵션으로써 리포트에 나타낼 정보의 하위 집합만 보일수 있도록 필터링할 수 있는 기능이다.
[그림 부록A.19] 리포트 스타일 선택 화면
[그림 부록A.19 설명]
리포트 제목 및 화면에 보여줄 스타일을 선택하는 화면이다.
[그림 부록A.20] 리포트 생성 화면
[그림 부록A.20 설명]
[그림 부록A.19]에서 번호l의 "마침"버튼을 클릭함으로써 나타나는 최종 크리스탈 리포트 생성화면이다. 이로써 하나의 "New_CrystalReport.rpt" 라는 리포트가 만들어진 것이다.
[4 단계] ASP.NET 화면 구성 및 C# 소스 코딩
[그림 부록A.21] 크리스탈 뷰어 설치
[그림 부록A.21 설명]
크리스탈 리포트를 ASP.NET 웹화면에 나타내기위해서는 "CrystalReportViewer" 웹컨트롤러가 필요하므로 마우스로 끌어서 웹화면에 내려놓는다.
[그림 부록A.22] 명렬 버튼 설치
[그림 부록A.22 설명]
생성된 크리스탈 리포트를 웹 화면에 나타내기위한 명령 버튼을 설치하고 여기에 C# 언어를 이용하여 소스를 생성해 본다.
[그림 부록A.23] 화면 디자인 완료
[그림 부록A.23 설명]
이제 웹 화면을 모두 디자인 했으므로 번호j의 크리스탈 리포트 뷰어에
"New_CrystalReport.rpt"라는 리포트를 연결해서 웹화면에 나타내는 소스를 번호k의 "검색" 버튼에 C#으로 작성해 본다.
"검색" 버튼에 들어갈 소스를 포함하여 현재까지의 ASP.NET의 C# 소스부분만을 살펴보면 아래 와 같다.
[소스 파일명 : WebForm1.aspx.cs]
--------------------------------------------------------------------
//ASP.NET 프로젝트 생성시 디폴트로 포함되는 컴포넌트
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
// 크리스탈 리포트 이용시 추가로 포함시키는 컴포넌트
using Microsoft.Win32;
using CrystalDecisions.Web;
using CrystalDecisions.Shared;
// ReportDocument 생성시 필요한 컴포넌트
using CrystalDecisions.CrystalReports.Engine;
namespace Sample_CrystalReport
{
/// <summary>
/// WebForm1에 대한 요약 설명입니다.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;
protected System.Web.UI.WebControls.Button btnView;
private void Page_Load(object sender, System.EventArgs e)
{
// 여기에 사용자 코드를 배치하여 페이지를 초기화합니다.
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 이 호출은 ASP.NET Web Form 디자이너에 필요합니다.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오.
/// </summary>
private void InitializeComponent()
{
this.btnView.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
//
// "검색"버튼 클릭시 크리스탈 리포트를 리포트 뷰어에 연결한후 화면에 보여주는 부분
//
******************************************************************************
private void Button1_Click(object sender, System.EventArgs e)
// 화면에서 검색버튼 클릭시
// 처리 이벤트
{
// 문서 인스턴스 생성 부분
ReportDocument oRpt = new ReportDocument();
// 생성된 인스턴스에 생성된 리포트를 로딩하는 부분
oRpt.Load("C:\\Inetpub\\wwwroot\\Sample_
CrystalReport\\New_CrystalReport.rpt");
// 로딩된 리포트를 크리스탈 뷰어에 연결시키는 부분
CrystalReportViewer1.ReportSource = oRpt;
//
//출력부분
//
//기본 프린터 셋팅하는부분:프린터 이름 명시
oRpt.PrintOptions.PrinterName = "HP LaserJet 2200 Series PCL 6";
//인쇄부수,가로,세로여부(true:세로,false:가로), 인쇄시작 페이지,인쇄 끝 페이지
oRpt.PrintToPrinter(1,true,1,1);
// 리포트 내용중 텍스트 검색방법
//CrystalReportViewer1.SearchForText("홍길동", SearchDirection.Forward);
******************************************************************************
<***** ←안에 내용들은 "검색"버튼 클릭시 발생하는 클릭 이벤트이다.>
}
private String GetSampleReportsDir()
{
// Get the path VS was installed to
RegistryKey regKey = Registry.LocalMachine;
regKey =
regKey.OpenSubKey("Software\\Microsoft
\\VisualStudio\\7.0\\Setup\\VS");
string dir = ""; // regKey.GetValue("ProductDir").ToString();
dir += "C:\\Inetpub\\wwwroot\\Sample_CrystalReport\\";
return dir;
}
}
}
--------------------------------------------------------------------
이상과 같이 "검색" 버튼에 소스를 작성하고, 실제로 실행하고서 검색 버튼 클릭시 나타나는 화면은 아래와 같다.
[그림 부록A.24] 실행 화면
[그림 부록A.24 설명]
실행후 "검색" 버튼을 클릭해보면 하단부에 실제 데이터가 나타나는 화면이다.
정 리
여기까지 부록A에서는 생성된 크리스탈 리포트를 뷰어에 연결한다음 웹페이지에 나타내는 방법과
출력해보는 경우를 실습해보았습니다 웹에서는 C/S와는 달리 리포트를 다루는데있어서 매우 힘든
부분이 있습니다. 이 실습을 통하여 간단히 리포트를 작성하고 출력하는데 조금이나마 도움이 되었으면 하는 바램이고, 크리스탈 리포트에 숨어져있는 여러가지 기능들을 살펴보는 계기가 되었으면합니다.
<http://oddcube.spaces.live.com/Blog/cns!FB22AC2E2B575158!234.entry>에서 삽입
'Development > .Net' 카테고리의 다른 글
Visual Studio 2008 C# 컴파일러 생성 문제 (0) | 2009.10.15 |
---|---|
ASP.NET Login (0) | 2009.08.03 |
Exception (예외) 처리 (0) | 2009.06.30 |
자동 로그인 (0) | 2009.06.04 |
Visual Studio 2008 활용팁 노트정리 (0) | 2009.06.04 |