현재 위치 - 회사기업대전 - 기업 정보 조회 - ASP.NET 보고서 생성에 대한 고찰

ASP.NET 보고서 생성에 대한 고찰

직장인들은 보고서 작성에 대해 약간의 감명을 받을 것이라고 믿는다. 깔끔하고 아름다운 보고회가 당신의 상사에게 많은 색을 더해 주고, 심지어 당신에게 월급을 올릴 수도 있습니다.)-모두가 임금 인상을 좋아하죠? 이 문서에서는 MS Reporting Services 2005 를 사용하여 보고서를 생성하고 c # 애플릿을 사용하여 보고서를 생성하는 방법에 대해 설명합니다.

이 문서에서는 독자가 Visual Studio 2005 IDE 에 대한 초보적인 이해를 가지고 있으며 C# 으로 코드를 작성할 수 있다고 가정합니다. 그들이 MS Reporting Services 를 이해하는지는 중요하지 않다. 물론, 이전에 비슷한 보고서를 쓰면 더 빨리 시작할 수 있다. 좋아, 소매를 걷어 올리고 시작할 준비를 하자!

그림 1 을 보십시오. 이 보고서는 얼마나 복잡합니까? 완료하는 데 얼마나 걸릴까요? 복잡성의 측면에서 볼 때, 그것은 단지 단순할 뿐, North Wind->; 제품에서 추출된 보고서 (SQL server 2000); 시간으로 볼 때, 나는 너를 꼬박 한 시간도 걸리지 않을 것이라고 믿는다.

그림 1

다음으로 보고서 작성을 시작하겠습니다. 먼저 c # 애플릿을 작성하여 보고서를 생성해야 합니다.

1: Windows 응용 프로그램을 만듭니다.

파일 메뉴, 새로 만들기-프로젝트를 선택하고 프로젝트 유형에서 C#, 오른쪽 대화 상자에서 Windows 응용 프로그램을 선택합니다. 이름 열에서 프로그램 용도를 나타내는 이름을 사용하는 것이 좋습니다. [위치] 열에서 저장할 디렉토리를 기록해 둡니다. 완료되면 프로젝트에 Form 1 이 있으며 양식 디자이너부터 시작합니다.

Form 1 의 속성을 다음과 같이 수정합니다. 물론 개인 취향에 따라 다른 속성을 수정할 수도 있습니다.

양식 1. Text = "스마트 클라이언트가 있는 ms reporting services101"

양식 1. 크기 = 750,300

2 단계: 양식에 crystalreportviewer 를 추가합니다.

Crystalreportviewer 란 무엇입니까? DVD 를 보려면 DVD 플레이어가 필요한 것처럼 보고서를 미리 보려면 crystalreportviewer 가 필요합니다.

보고서를 처음 쓴 사람에게 crystalreportviewer 는 보고서 생명을 부여했다고 할 수 있다. 출력을 미리 볼 수 있을 뿐만 아니라 PDF, Excel 등 다양한 형식으로 보고서 정보를 생성하는 데도 도움이 됩니다. ) 를 입력하고 인쇄합니다.

Crystalreportviewer 컨트롤을 Form 1 에 배치하려면 다음 단계를 따르십시오.

도구 상자-데이터 -crystalreportviewer 를 찾아 Form 1 으로 끕니다. 이렇게 하면 reportViewer 1 이라는 새 인스턴스가 생성됩니다.

ReportViewer 1 을 설정하여. Dock = Fill, crystalreportviewer 는 보고서를 표시하기 위해 양식의 전체 영역을 채웁니다.

첫 번째 단계와 두 번째 단계를 완료한 후 프로젝트는 그림 2 와 같아야 합니다.

그림 2

단계 3: 프로젝트에 데이터 세트 추가.

데이터 세트에는 crystalreportviewer 가 있습니다. C# 프로그램에서 처리하거나 내보낼 수 있는 데이터 소스의 원시 데이터를 저장하고 제공합니다.

다음 단계에 따라 데이터 세트를 추가합니다.

솔루션 탐색기에서 Add-New Project-Dataset 를 선택하고 이름을 DataSet 1 으로 dsProduct 로 변경한 다음 Add 를 클릭하여 완료합니다.

새로 작성한 데이터 세트에 데이터 테이블을 추가합니다. 데이터 테이블은 기본적으로 보고서 데이터를 로드하는 데 사용되며 보고서를 디자인할 때 DataSet/DataTable 의 관련 정보를 사용합니다.

다음은 데이터 세트 (dsProduct) 에 데이터 테이블을 추가하는 것입니다.

솔루션 탐색기에서 dsProduct 를 두 번 클릭하면 디자인 뷰가 열리고 마우스 오른쪽 버튼을 클릭한 다음 Add-Datasheet 를 선택합니다. 그런 다음 제목을 클릭하여 그림 3 과 같이 이름을 dtProductList 로 변경합니다.

그림 3

다음으로 데이터 테이블 (dtProductList) 에 열을 추가하는 작업을 시작합니다. 이때 디자인 뷰는 그림 4 와 같아야 합니다. DtProductList 를 마우스 오른쪽 단추로 누르고 추가-열을 선택합니다.

그림 4

위 단계를 반복하여 다음을 추가합니다.

제품명 (문자열)

QuantityPerUnit (문자열)

단가 (2 배)

단위 재고 (배정도)

UnitValue (Double): UnitsInStock * UnitPrice 를 기반으로 한 계산된 필드.

열을 추가할 때 기본값은 문자열 데이터 유형입니다. 추가했으면 속성 창으로 이동하여 해당 열을 Double 유형으로 변경합니다.

그림 5 를 보십시오. 지금 데이터시트는 이렇습니다. 또한 속성 창을 보고 데이터 유형을 수정할 수 있습니다.

그림 5

4 단계: 프로젝트에 대한 보고서 추가.

지금까지 crystalreportviewer 와 데이터 세트를 추가하는 프로젝트를 만들었습니다. 이제 깔끔하고 아름다운 보고서를 만들 때가 되었다.

다음 단계에 따라 보고서 (rptProductList.rdlc) 를 생성해야 합니다.

솔루션 리소스 탐색기에서 추가-새 프로젝트-보고서를 선택하고 Report 1.rdlc 의 이름을 rptProductList.rdlc 로 변경한 다음 추가를 클릭하여 완료합니다.

이 프로젝트는 그림 6 과 같을 수 있습니다. 보고서를 추가한 후 데이터 세트를 사용하여 디자인을 시작할 수 있습니다.

그림 6

보고서를 처음 디자인하는 초보자든 베테랑이든 헤더 (또는 헤더), 바닥글, 테이블 등 세 가지 기본 보고서 영역을 처리해야 합니다. 일반적으로 보고서를 디자인할 때는 종이의 크기, 조판 방법 등 초안이 있어야 한다. , 보통 편지지 크기, 수직 행. 물론, 일을 시작하기 전에 종이에 스케치를 그릴 수 있다면 더 좋을 것이다. 그림 1 을 뒤돌아 볼 수 있습니다. 머리글에서는 보고서 이름과 날짜를 사용할 수 있습니다. 테이블 양식에는 제품 관련 정보 목록이 있고 바닥글에는 페이지 번호가 있습니다.

제목부터 시작하겠습니다. 프로젝트에 새 보고서를 추가하면 기본적으로 report designer 에서는 테이블 본문만 표시됩니다. Report designer 테이블 외부를 마우스 오른쪽 단추로 누르고 머리글을 선택합니다. 이렇게 하면 보고서에 헤더가 추가되므로 헤더의 높이와 테이블 영역을 자유롭게 조정할 수 있습니다. 그림 7 을 보면 테이블 높이가 낮아지고 헤더 높이가 증가합니다.

그림 7

보고서 디자이너의 도구 상자에서 보고서를 디자인하는 데 사용되는 다양한 컨트롤을 볼 수 있습니다. 이 예에서는 텍스트 상자, 선 및 테이블 컨트롤을 사용합니다. 이제 우리는 머리말을 디자인하기 시작했습니다. 두 개의 텍스트 상자를 끌어서 제목 영역에 놓습니다. 텍스트 상자에는 정적 및 동적 데이터가 표시될 수 있으며 행 컨트롤은 머리글과 본문 영역을 구분하는 데 사용됩니다. 컨트롤을 배치한 후 해당 속성을 수정하여 필요한 값을 표시할 수 있습니다. 예를 들어, 한 텍스트 상자는 보고서 제목으로 지정하고 다른 텍스트 상자는 현재 날짜를 표시할 수 있습니다. 텍스트 상자를 선택한 후 정적 텍스트를 직접 입력할 수 있습니다.

제목 텍스트 상자를 다음과 같이 수정합니다.

Value = "제품 목록"

색상 = 자주색

날짜 텍스트 상자가 다음과 같이 수정되었습니다.

Value = "실행 데이터:"& 오늘

색상 = 자주색

[span] 날짜 텍스트 상자의 Value 속성은 기호 "=" 로 시작합니다. 즉, 단순한 정적 텍스트가 아니라 문자열 "실행 날짜" 와 오늘의 VB.NET 스크립트의 결과입니다.

또한 보고서의 모든 객체에 임의의 이름을 지정할 수 있습니다. 일반적으로 대부분의 컨트롤의 경우 기본 이름을 유지하는 것이 좋습니다. 여기서 제목 텍스트 상자의 이름 (name 속성) 은 "txtTitle" 로 지정됩니다.

그림 8 을 참조하십시오. 제목 설계가 완료되면 다음과 같이 나타나야 합니다.

그림 8

지금은 몸입니다. 표체는 정보를 전달하는 상세 영역이며 전체 보고서의 가장 중요한 부분입니다. 보고서가 프로젝트에 추가될 때 양식이 자동으로 추가되는 것을 볼 수 있습니다. 위에 컨트롤을 넣기만 하면 됩니다.

일반적으로 body 영역은 상세 데이터 (이 경우 제품 정보) 를 표시하는 데 사용되며 일반적으로 여러 줄 정보입니다. 보고서의 데이터가 증가하면 본문 면적이 그에 따라 늘어나지만 일반적으로 보고서는 한 페이지 (편지지 또는 A4 용지 크기) 로만 설계됩니다.

테이블 영역에서 가장 일반적으로 사용되는 세 가지 컨트롤인 테이블, 행렬 및 리스트가 있습니다. 이 예에서는 테이블 컨트롤을 사용합니다. 보고서 디자인 인터페이스에서 테이블 본문 영역 위로 테이블 컨트롤을 끌면 머리글, 테이블, 바닥글 등의 레이블이 지정된 세 개의 행과 세 개의 열이 있는 테이블이 생성됩니다.

양식 컨트롤이 단지 TextBox 의 조합일 뿐이라는 것을 알았을 때, 조금 놀랍지 않습니까? 또한 테이블의 각 셀은 텍스트 상자와 동일합니다. 즉, 정적 텍스트를 입력하거나 동적 표현식을 지정할 수 있습니다.

테이블 영역 설계를 시작하기 전에 두 개의 열을 더 추가해야 합니다 (우리 보고서에는 다섯 개의 열이 있음). 열을 추가하는 것은 매우 간단합니다. 다음 단계만 수행하면 됩니다.

1. 테이블 영역에서 테이블 컨트롤을 선택합니다.

2. 맨 오른쪽 열의 헤딩을 마우스 왼쪽 버튼으로 클릭합니다 (오른쪽에서 신규 열을 추가하는 것으로 가정).

3. 헤딩을 마우스 오른쪽 버튼으로 클릭하고 오른쪽에 열 삽입을 선택합니다.

이제 보고서는 그림 9 와 같아야합니다. 열의 데이터에 따라 열의 폭을 자유롭게 조정할 수 있습니다.

그림 9

여러분 대부분은 엑셀 (Excel) 이나 이와 비슷한 것을 사용해 보셨을 겁니다. Table 컨트롤을 테두리 유형을 선택하고 모든 셀의 글꼴을 변경하는 등의 작업을 수행할 수 있는 미니 워크시트로 간주할 수 있습니다. 그래서 해야 할 일은 이전에 생각했던 형식에 따라 양식을 디자인하는 것이다.

첫 번째 열부터 시작 하자, 다음 각 열은 동일 합니다. 맨위 셀을 누르고 다음을 입력합니다.

헤더 1: "제품명"

제목 2: "포장"

제목 3: 단가

제목 4: 재고 uom

제목 5: "주식 가치"

다음 상세 데이터 영역 (이전 상세 정보) 에서는 dsProduct.dtProductInfo 의 열인 표현식을 입력해야 합니다. 여기서 표현식을 수동으로 입력하거나 데이터 소스 도구상자에서 끌어다 놓을 수 있습니다 (그림 7 의 왼쪽 참조).

수동으로 입력하려면 데이터 영역의 첫 번째 열에서 마지막 열까지 셀을 누르고 다음을 입력합니다.

Detail 1:" = 필드! ProductName. 가치 "

상세 정보 2:" = 필드! QuantityPerUnit. 가치 "

상세 정보 3:" = 필드! UnitsInStock. 가치 "

세부 정보 4:" = 필드! 단가. 가치 "

상세 정보 5:" = 필드! UnitsInStock. 값 * 필드! 단가. 가치 "

디테일 5 는 재고 단위와 단위 가치를 곱한 출력입니다. 또한 테이블 컨트롤의 데이터 영역으로 열을 끌면 헤더가 비어 있는 경우 헤더가 자동으로 추가된다는 점도 경고합니다.

마지막으로 테이블 컨트롤의 바닥글에 누적 열을 추가하고 테이블 영역에서 열 4 와 5 의 바닥글 셀을 선택한 다음 다음을 입력합니다.

셀 4: 합계: "

셀 5: "= 합계 (필드! UnitsInStock. 값 * 필드! 단가. 값) "

내장 SUM () 함수를 사용하여 누적 결과를 가져오는 5 셀을 누릅니다.

마지막으로 바닥 글 영역만 남았습니다. C# 코드 작성을 시작하기 전에 이전에 보고서 헤더를 추가한 것처럼 보고서 바닥글을 완료해야 합니다. 열린 report designer 에서 그림 7 과 같이 마우스 오른쪽 단추를 누르고 바닥글을 선택합니다.

Line 및 TextBox 컨트롤을 바닥글 영역으로 끌어다 놓고 TextBox 에 다음 표현식을 입력합니다.

값: = "페이지:" & 글로벌! 페이지 번호& "/"& 글로벌! 총 페이지 수

보시다시피 여기서는 PageNumber 와 TotalPages 를 사용합니다. 모두 글로벌 변수입니다.

이제 보고서는 10 과 같이 표시되어야 합니다. 여기서 색깔이 조금 달라졌다. 숫자 데이터를 오른쪽으로 정렬하고 테이블을 Excel 워크시트로 처리합니다. 너는 마음대로 네가 원하는 모양으로 조정할 수 있다.

그림 10

거의 다 됐어요! 나머지는 표현식 생성기입니다. Expression builder 는 Reporting Services 에서 매우 강력한 도구입니다. 1 1 과 같이 주식 가치는 SUM 함수에 의해 계산되며 DateSet 의 모든 데이터는' Fields!' 를 사용할 수 있습니다 키워드 액세스.

그림 1 1

단계 5: 보고서에 생명력을 부여하는 C# 코드 작성

솔루션 탐색기에서 Form 1 을 선택하고 마우스 오른쪽 버튼을 클릭한 다음 코드 보기를 선택하여 Form 1_Load 에 다음 코드를 추가합니다.

시스템을 사용하다. Data. SqlClient

마이크로소프트를 사용하다. 보고서. WinForms

개인 void Form 1_Load (개체 발신자, 이벤트 e)

{

//연결 문자열 선언

String cnString = @ "(로컬); 초기 디렉터리 = northwind+ "사용자 Id = northwind 암호 = northwind";

//표준 보안 속성을 사용하는 경우 다음 코드로 변경합니다.

//string cnString = @ "데이터 소스 = (로컬); 초기 디렉터리 = northwind 통합 보안 = sspi ";

//연결, 명령 개체 및 기타 관련 개체를 선언합니다.

Sqlconnectionconreport = new sqlconnection (cnstring);

Sqlcommandcmdreport = new sqlcommand ();

Sqldatareader dr 보고서

데이터 세트 dsreport = new dsproduct ();

시도하다

{

//연결 열기

보고서 내용. Open ();

//연결 개체를 준비하고 가져온 데이터를 데이터 세트에 배치합니다.

Cmd 보고서. CommandType = CommandType 입니다. 텍스트;

Cmd 보고서. Connection = conReport

Cmd 보고서. Commandtext = "select top 5 * from products order by product name";

//명령 객체에서 데이터 읽기

DrReport = cmdReport 입니다. Executereader ();

//ADO.NET 을 사용하면 읽은 데이터를 데이터 세트에 직접 로드할 수 있습니다.

DsReport. 양식 [0]. 로드 (dr 보고서);

//읽기 및 연결 끄기

Dr 보고서. 닫기 ();

보고서 내용. 닫기 ();

//뷰어에 로컬 보고서 데이터를 제공합니다.

RpvAbraKaDabra 입니다. Localreport.reportembeddedresource =

"RS win101.rptproduct list.rdlc";

//보고서 데이터 소스 준비

Report data source rds = new report data source ();

Rds. Name = "dsproduct _ dtproductlist";

Rds. Value = dsReport 입니다. 표 [0];

RpvAbraKaDabra 입니다. Localreport.datasources.add (rds);

//crystalreportviewer 를 로드합니다.

RpvAbraKaDabra 입니다. Refresh report ();

}

Catch (예외 ex)

{

//오류 메시지 표시

MessageBox 입니다. 표시 (예: 메시지);

}

마지막으로

{

//연결이 여전히 열려 있는지 확인하고 열려 있는 경우 닫습니다.

If (conReport). State == ConnectionState 입니다. 열기)

{

보고서 내용. 닫기 ();

}

}

}

여기서 "TOP 5" 가 select 쿼리 문에 사용되는 이유를 알고 싶을 수 있습니다. 이것은 단지 데모용이며 출력은 그림 1 과 같은 누적 결과로 제한됩니다. 또한 ReportDataSource 의 Name 속성은 항상 "DataSet_DataTable" 이어야 합니다.

후베이 신블루해는 인터넷 마케팅과 인터넷 보급에 주력하는 선두 기업으로, 우한 건민, 화공 레이저, 강서인 등 여러 유명 기업에 인터넷 마케팅 아웃소싱 서비스를 제공했다. 자세한 내용은 각 주요 검색 엔진에서' 후베이 신블루해' 를 검색해 주세요.

copyright 2024회사기업대전