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. 출력


반응형
728x90
300x250

[PC 활용] (C#.NET) Crystal Report 13(Visual Studio 2010) 배포 시 문제점

Visual Studio 2010을 통해 Crystal Report 13를 배포하는 데 있어서 큰 문제를 두 가지로 요약하여 언급하고자 합니다.
빌드 방법에는 'Oneclick 게시', 'MSI Installer'가 존재합니다. 그 외에도 Installshield 2010도 있을 것이며 다양한 방법이 존재합니다만 Visual Studio 2010을 주목적으로 쓴 글이므로 제외하도록 하겠습니다.
Oneclick 배포에 관하여 언급한 주제는 필수 구성요소입니다. MSI Installer로의 배포에 관하여 언급한 부분은 Mail Merge 부분과 Oneclick과 같이 솔루션 자체에 필수 구성요소를 설정하는 방법이 있겠습니다.

운영체제: Microsoft Windows 7
소프트웨어: Visual Studio 2010
                    Crystal Report 13


1. Mail Merge Module

메일머지 모듈을 사용하여 MSI 인스톨러로 배포 시 문제점에 대해서 언급하고자 합니다.
Crystal Report 13의 Mail Merge Module을 사용할 때 MSI 인스톨러에 Crystal Report 13을 통합하여 배포할 수 있으므로 매우 편리합니다.



그림 1-1. Visual Studio 2008의 병합 모듈

Visual Studio 2010에서 rpt파일을 작성할 때 '코드를 확인할 수 없습니다.'라는 오류를 발생하는 것을 확인할 수 있습니다. 단, Mail Merge Module로 빌드한 솔루션을 개발환경 PC에 설치하였을 때 발생합니다.
저는 Crystal Report 13(2010)을 사용한 프로젝트를 하게 되었을 때 차라리 별도의 라이브러리를 배포할 수 있는 URL을 배포하는 게 괜찮다고 생각됩니다.
Mail Merge Module을 함께 솔루션 빌드하였을 때 수 많은 코드로 말미암아 컴파일 시간이 오래 걸릴 뿐 더러 개발환경에 많은 영향을 미치기 때문에 제외하고 컴파일하는 것을 권장합니다.

http://www.businessobjects.com/jump/xi/crvs2010/us2_default.asp


2. 솔루션 빌드의 필수 구성 요소



그림 2-1. 솔루션의 필수 구성요소

솔루션의 필수 구성요소에 보면 Crystal Report 13 Runtime Pack이 존재합니다.
Crystal Report 13 Runtime Pack을 웹 사이트에서 다운 받기를 체크할 경우에 경로를 찾지 못해 배포에 큰 타격을 입게 됩니다. 내 응용 프로그램 속에 함께 빌드하는 방법도 이 문제를 해결하는 데 좋은 대안이 될 수 있겠으나 파일의 이름을 정확히 모른다면 큰 타격을 입게 될 것입니다.


3. 결론

MSI Installer 빌드시 핵심 라이브러리 파일을 조건문으로 지정하여 배포하는 것입니다.
반응형

+ Recent posts