728x90
300x250

[C#.NET + ADO.NET] Crystal Report 13 데이터 집합과 동적 제어

Crystal Report 13을 동적 데이터베이스를 통해 제어하는 방법을 소개하도록 하겠습니다.
마법사를 이용하여 데이터베이스를 선택할 때 다른 PC에 배포하게 되면 위치를 찾을 수 없어서 실행하지 못하는 경우가 생깁니다. 이와 같은 불상사를 예방하기 위해 데이터 집합을 이용하여 Crystal Report 13을 동적으로 제어하는 방법에 관하여 언급하겠습니다.


1. 데이터베이스 파일 및 소스 코드
CrystalReportsApplication1.zip


2. 데이터베이스 준비하기



Access 2003 파일로 위의 그림과 같이 디자인하시고 저장하시기 바랍니다.


3. 새 프로젝트 만들기



CrystalReportApplication을 클릭하고 만듭니다.
빈 보고서 만들기를 클릭합니다.

2. 데이터 집합 만들기
솔루션에서 새 항목을 클릭 후 데이터 집합을 만듭니다.

 

예제에서는 기본 이름 Dataset1.xsd를 사용하겠습니다.


Dataset1.xsd를 더블 클릭하신 후에 오른쪽 버튼을 클릭하고 추가에서 DataTable(D)을 클릭합니다.

Table이름을 sampledb로 하시고 Access에서 만든 열 항목의 이름을 그대로 입력합니다.
(참고 열 항목 이름을 다르게 할 수도 있습니다. Columns AS 신규이름)


3. Crystal Report Design



CrystalReport File을 클릭합니다. 필드 탐색기를 클릭 후에 데이터베이스 필드 항목에서 오른쪽 버튼을 하신 후에 데이터베이스 전문가를 클릭합니다.


프로젝트 데이터를 클릭하시고 ADO.NET 데이터 집합을 클릭하고 sampledb를 선택합니다.
화살표 키를 눌러서 선택한 테이블로 넘기신 후 확인을 클릭합니다.



Sampledb가 올라온 것을 확인하실 수 있습니다.
필드 항목을 적절히 배치하시고 저장합니다.

3-1. 데이터베이스 파일 프로젝트에 추가
솔루션을 클릭 후 오른쪽 버튼을 클릭합니다. 추가에서 기존 항목을 클릭합니다.


데이터 파일로 확장명을 변경 후 아까 전에 만든 파일을 선택합니다.



취소를 클릭합니다.

3-2. app.config 파일 만들기
솔루션을 클릭 후 오른쪽 버튼을 클릭합니다. 추가에서 새 항목을 클릭합니다.



app.config이란 이름으로 파일을 생성합니다.

app.config에 코딩합니다.
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
 
<supportRuntime version="v4.0" />
</startup>
</configuration>

3-3. Form1.cs 코딩

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Windows.Forms;
namespace CrystalReportsApplication1
{
    public partial class Form1 : Form
    {
        CrystalReport1 objRpt;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            objRpt = new CrystalReport1();
            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\sample.mdb;";
            string strQry = "select * from sample";
            try
            {
                OleDbConnection oleConn = new OleDbConnection(connectionString);
                oleConn.Open();
                DataSet1 DS = new DataSet1();
                OleDbDataAdapter oleDA = new OleDbDataAdapter(strQry, oleConn);
                oleDA.Fill(DS, "sampledb");
                objRpt.SetDataSource(DS);
                crystalReportViewer1.ReportSource = objRpt;
                oleConn.Close();
            }
            catch
            {
            }
        }
    }
}




4. 출력


반응형

+ Recent posts