연습: ReportViewer 보고서 만들기

이 연습에서는 Microsoft Visual Studio 2008 Windows 응용 프로그램 프로젝트에서 AdventureWorks 예제 데이터베이스를 기반으로 간단한 테이블 보고서를 만드는 방법을 보여 줍니다. 프로젝트에 보고서 템플릿을 추가하고, AdventureWorks 데이터베이스에 대한 연결 정보를 설정하고, 쿼리를 정의하고, 테이블 데이터 영역을 추가하고, 응용 프로그램 사용자가 보고서를 볼 수 있도록 Windows Form에 ReportViewer Windows Forms 컨트롤을 추가합니다.

필수 구성 요소

이 연습을 사용하려면 SQL Server 2005용 AdventureWorks 예제 데이터베이스에 대한 액세스 권한이 있어야 합니다. 이전 버전의 AdventureWorks를 사용하는 경우 쿼리가 실패합니다. SQL Server 2005 버전의 AdventureWorks를 구하는 방법은 연습: AdventureWorks 데이터베이스 설치를 참조하십시오.

이 연습에서는 사용자가 Transaction-SQL 쿼리와 ADO.NET DataSetDataTable 개체에 대해 잘 알고 있다고 가정합니다.

새 Windows 기반 응용 프로그램 프로젝트를 만들려면

  1. Visual Studio를 엽니다. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 선택합니다.

  2. 프로젝트 형식 창에서 Visual Basic을 선택합니다.

  3. 템플릿 창에서 Windows 응용 프로그램을 선택하여 Microsoft Windows 기반 응용 프로그램을 만듭니다.

  4. 이름 상자에 SimpleReport를 입력합니다.

  5. 위치 입력란에 프로젝트를 저장할 디렉터리를 입력하거나 찾아보기를 클릭하여 해당 디렉터리를 찾습니다.

    Windows Forms 디자이너가 열리고 방금 만든 프로젝트의 Form1이 표시됩니다.

  6. 폼을 클릭합니다. 보기 메뉴에서 속성 창을 선택합니다. Size 속성을 확장하여 WidthHeight를 표시합니다. Width를 500픽셀로 설정합니다.

데이터 원본 연결 및 데이터 테이블을 정의하려면

  1. 솔루션 탐색기에서 SimpleReport라는 프로젝트(솔루션이 아님)를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 항목을 선택합니다. 솔루션 탐색기 창이 표시되지 않으면 보기 메뉴에서 솔루션 탐색기를 클릭합니다.

  2. 새 항목 추가 대화 상자에서 데이터 집합을 클릭합니다. 데이터 집합의 이름을 입력하고 추가를 클릭합니다. 기본 이름은 DataSet1.xsd입니다.

    새 XSD 파일이 프로젝트에 추가되고 데이터 집합 디자이너가 열립니다.

  3. 보기 메뉴에서 디자이너를 클릭합니다. 도구 상자를 열고 TableAdapter 컨트롤을 데이터 집합 디자인 화면으로 끕니다.

    TableAdapter 구성 마법사가 시작됩니다.

  4. 데이터 연결 선택 페이지에서 새 연결을 클릭합니다.

  5. 연결 추가 페이지에서 다음 단계를 수행합니다.

    • 데이터 소스 상자에서 Microsoft SQL Server를 선택합니다.

    • 서버 이름 상자에 AdventureWorks 데이터베이스가 위치한 서버를 입력합니다.

      기본 SQL Server Express 인스턴스는 (local)\sqlexpress입니다.

    • 드롭다운 목록에서 AdventureWorks를 클릭합니다.

    • 확인을 클릭하여 마법사로 돌아간 후 다음을 클릭합니다.

  6. 응용 프로그램 구성 파일에 연결 문자열 저장 페이지에서 연결 문자열의 이름을 입력하거나 기본값 AdventureWorksConnectionString을 적용합니다. 다음을 클릭합니다.

  7. 명령 유형을 선택하십시오 페이지에서 SQL 문 사용을 선택하고 다음을 클릭합니다.

  8. SQL 문을 입력하십시오 페이지에서 다음 Transact-SQL 쿼리를 입력하여 AdventureWorks 데이터베이스에서 판매 데이터를 검색한 다음 마침을 클릭합니다.

    SELECT  S.OrderDate, S.SalesOrderNumber, S.TotalDue AS TotalSales, 
            C.FirstName, C.LastName
    FROM    HumanResources.Employee E INNER JOIN
            Person.Contact C ON E.ContactID = C.ContactID INNER JOIN
            Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID
    

    쿼리 작성기 단추를 클릭하고 쿼리 작성기에서 쿼리를 만든 다음 쿼리 실행 단추를 사용하여 유효성을 검사할 수도 있습니다.

    이제 데이터 집합 디자이너에는 DataTable1에 대한 DataTable 정의가 표시됩니다. 이때 필드 이름은 쿼리의 열 및 열 별칭(OrderDate, SalesOrderNumber, TotalSales, FirstNameLastName)에 따라 지정됩니다. 데이터를 보고서 데이터 영역에 바인딩할 때 이러한 필드를 데이터 소스 창에서 사용합니다.

    Note참고

    데이터 테이블의 필드를 변경해야 하는 경우 데이터 집합 디자이너 페이지에서 DataTable1 머리글이나 DataTable1TableAdapter 머리글을 마우스 오른쪽 단추로 클릭하고 구성을 선택하십시오. 이렇게 하면 TableAdapter 구성 마법사가 다시 시작됩니다.

새 보고서 정의 파일을 추가하려면

  1. 프로젝트 메뉴에서 새 항목추가를 가리킵니다.

  2. 새 항목 추가 대화 상자에서 보고서를 클릭합니다.

  3. 이름Sales Orders.rdlc를 입력한 다음 추가를 클릭하여 그래픽 디자인 화면을 엽니다.

    그래픽 디자인 화면은 Visual Studio 2008 보고서 디자이너 구성 요소의 일부입니다.

보고서 레이아웃에 테이블을 추가하려면

  1. 그래픽 디자인 모드로 Sales Orders.rdlc가 표시된 상태에서 보기 메뉴의 도구 상자를 선택합니다.

    도구 상자가 열립니다.

  2. 도구 상자 데이터 섹션에서 테이블, 보고서 디자인 화면을 차례로 클릭합니다.

    보고서 디자이너에 3개의 열이 있는 테이블이 보고서의 너비를 확장하며 표시됩니다.

  3. 테이블을 클릭하여 열 핸들과 행 핸들이 테이블 위와 옆에 표시되도록 합니다.

  4. 첫 번째 열의 핸들을 마우스 오른쪽 단추로 클릭한 다음 왼쪽에 열 삽입을 클릭합니다.

  5. table1의 속성 창에서 Size 노드를 확장합니다. 기본적으로 속성 창은 솔루션 탐색기 아래에 도킹되어 있습니다. 보기 메뉴에서 속성 창을 선택하여 이 창을 열 수도 있습니다.

  6. Size 노드의 Width 속성을 4.8in로 설정합니다. 이렇게 하면 폼에서 볼 때 같은 간격이 되도록 테이블 너비와 열 너비가 설정됩니다.

  7. 보고서 디자이너에서 디자인 화면을 클릭합니다.

  8. 속성 창에서 Size 노드를 확장하고 Width5in로 설정합니다.

  9. 데이터 소스 창에서 DataTable1 노드를 클릭하여 확장하고 데이터 필드를 표시합니다. 그런 후 다음 단계를 수행합니다.

    • 데이터 소스 창에서 테이블에 있는 첫 번째 열의 가운데(자세히) 행으로 LastName 필드를 끕니다.

    • 필드를 가운데 셀에 놓으면 두 가지 동작이 발생합니다.

      먼저 자세히 셀에 =Fields!LastName.Value 텍스트가 포함됩니다. 이 텍스트는 LastName 필드의 데이터 값을 지정하는 필드 식입니다. 자세히 행에 추가하는 필드는 항상 식으로 지정됩니다.

      두 번째로 첫 번째 행의 필드 식 바로 위에 열 머리글 값이 자동으로 배치됩니다. 기본적으로 열은 필드 이름에서 생성됩니다. 파스칼 대/소문자를 사용하는 필드 이름의 경우 열 이름은 각각이 공백으로 구분되어 대문자로 표시된 단어입니다. 예를 들어 LastNameLast Name이 됩니다.

    • 데이터 소스 창에서 테이블에 있는 두 번째 열의 가운데(자세히) 행으로 OrderDate 필드를 끕니다.

    • 데이터 소스 창에서 테이블에 있는 세 번째 열의 가운데(자세히) 행으로 SalesOrderNumber 필드를 끕니다.

    • 데이터 소스 창에서 테이블에 있는 마지막 열의 가운데(자세히) 행으로 TotalSales 필드를 끕니다.

    다음 다이어그램에서는 LastName, OrderDate, SalesOrderNumberTotalSales 필드로 채워진 테이블 데이터 영역을 보여 줍니다.

    기본 보고서 정의 테이블

폼에 ReportViewer 컨트롤을 추가하려면

  1. 솔루션 탐색기에서 Form1.vb를 클릭합니다.

  2. 보기 메뉴에서 디자이너를 선택합니다.

  3. 도구 상자의 데이터 섹션에서 ReportViewer 컨트롤을 폼으로 끕니다.

  4. 폼을 클릭합니다. 속성 창에서 Size를 확장합니다. 필요에 따라 Width 및 Height 속성을 설정합니다.

  5. 컨트롤의 오른쪽 위 삼각형을 클릭하여 ReportViewer 컨트롤의 스마트 태그 패널을 엽니다. 보고서 선택 드롭다운 목록을 클릭하고 Sales Orders.rdlc를 선택합니다.

  6. 스마트 태그 패널에서 부모 컨테이너에서 도킹을 클릭합니다.

    이 연습의 나머지 부분에서 응용 프로그램을 빌드하고 언제든지 폼에서 보고서를 볼 수 있습니다. 보고서 디자인의 증분 변경 내용이 최종 보고서에 주는 영향을 확인하려면 다음 절차 각각의 마지막 단계로 보고서를 빌드하고 봅니다.

  7. F5 키를 눌러 응용 프로그램을 빌드하고 폼에서 보고서를 봅니다(옵션).

    다음 다이어그램에서는 폼에 렌더링된 현재 보고서 정의를 보여 줍니다. 하나의 머리글 행, 하나의 자세히 행(데이터 테이블의 행마다), 하나의 바닥글 행(보고서의 마지막 페이지)이 모두 기본 형식으로 표시됩니다.

    렌더링된 보고서의 기본 테이블

날짜 필드의 형식을 지정하려면

  1. OrderDate 필드 식이 있는 셀을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다. 텍스트 상자 속성 대화 상자가 표시됩니다.

  2. 서식 탭을 선택하고 찾아보기 단추()를 클릭하여 형식 선택 대화 상자를 엽니다.

    서식 상자에서 표준, 날짜 및 날짜 형식을 차례로 선택합니다.

  3. 확인을 클릭하여 형식 선택 대화 상자를 닫은 다음 확인을 다시 클릭하여 텍스트 상자 속성 대화 상자를 닫습니다.

    날짜 형식 선택 대화 상자

  4. F5 키를 눌러 응용 프로그램을 빌드하고 보고서를 봅니다(옵션). 이 경우 방금 적용한 형식으로 날짜 열이 표시됩니다.

통화 필드의 형식을 지정하려면

  1. TotalSales 필드 식이 있는 셀을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.

  2. 서식 탭을 선택하고 찾아보기 단추()를 클릭하여 형식 선택 대화 상자를 엽니다.

  3. 서식 상자에서 표준, 통화 및 통화 형식을 차례로 선택합니다.

  4. 확인을 클릭한 다음 확인을 다시 클릭하여 텍스트 상자 속성 대화 상자를 닫습니다.

    통화 형식 선택 대화 상자

  5. F5 키를 눌러 응용 프로그램을 빌드하고 보고서를 봅니다(옵션). 이 경우 Total Sales 열 값이 통화 형식으로 표시됩니다.

테이블 머리글의 형식을 지정하려면

  1. 테이블을 클릭하여 열 핸들과 행 핸들이 테이블 위와 옆에 표시되도록 합니다.

    Note참고

    핸들은 테이블 위와 옆에 표시되는 회색 상자입니다. 핸들을 사용하여 열, 행 및 테이블 자체에서 여러 가지 동작을 수행할 수 있습니다. 테이블 위쪽을 가로지르는 핸들이 열 핸들입니다. 테이블 옆쪽을 세로로 내려오는 핸들이 행 핸들입니다. 열 핸들과 행 핸들이 만나는 위치의 핸들이 모퉁이 핸들입니다. 테이블 핸들의 예를 보려면 테이블 데이터 영역 추가(Visual Studio 보고서 디자이너)을 참조하십시오.

  2. 열 머리글 레이블이 들어 있는 첫 번째 행의 행 핸들을 선택한 다음 굵게를 클릭합니다.

  3. 테이블 머리글 행을 클릭한 다음 배경색을 클릭합니다. 탭을 클릭하고 흐린 분홍을 선택합니다. 확인을 클릭합니다.

  4. F5 키를 클릭하여 응용 프로그램을 빌드하고 보고서를 봅니다(옵션). 다음 다이어그램에서는 형식이 지정된 보고서를 보여 줍니다.

    서식이 포함된 기본 테이블 보기

테이블 형식 보고서에 대한 그룹을 정의하려면

  1. 테이블을 클릭하여 열 핸들과 행 핸들이 테이블 위와 옆에 표시되도록 합니다.

  2. 행 핸들을 마우스 오른쪽 단추로 클릭한 다음 그룹 삽입을 클릭합니다.

  3. 일반 탭에서 그룹화 대상 상자의 첫 번째 행은 =Fields!LastName.Value를, 두 번째 행은 =Fields!FirstName.Value를 선택합니다. 이렇게 하면 영업 사원 이름별로 데이터가 그룹화됩니다. 테이블 데이터 영역에서는 사용되지 않지만 DataTable1 필드에서 사용할 수 있는 필드별로 데이터를 그룹화할 수 있습니다.

    그룹화 및 정렬 속성 페이지, 일반 탭

  4. 확인을 클릭합니다.

    그룹 머리글과 그룹 바닥글이 테이블에 추가됩니다.

그룹별로 데이터를 요약하려면

  1. 그룹 머리글 행을 클릭한 다음 배경색을 클릭합니다. 탭을 선택하고 연한 녹청을 선택합니다. 확인을 클릭합니다.

  2. 모든 행에서 반복되는 TotalSales를 그룹 머리글의 식(그룹에 대한 총 합계)으로 바꿉니다.

    1. Total Sales의 그룹 머리글을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 텍스트 상자 속성 대화 상자가 열립니다.

    2. 아래 텍스트를 복사하여 드롭다운 목록에 붙여 넣습니다.

      =Sum(Fields!TotalSales.Value)
      
    3. 이 텍스트 상자에 통화 형식을 적용합니다.

  3. 모든 행에서 반복되는 이름을 두 줄이 포함된 그룹 머리글의 식으로 바꿉니다. 첫 번째 줄은 이름이고 두 번째 줄은 Null이 아닌 판매 수입니다.

    1. Last Name 자세히 행에서 식을 선택하여 삭제합니다.

    2. Last Name의 그룹 머리글 행을 마우스 오른쪽 단추로 클릭하고 을 선택합니다. 다음 텍스트를 복사하여 식 편집 대화 상자 영역에 붙여 넣습니다.

      Fields!FirstName.Value + " " + Fields!LastName.Value + ": " + vbCrLf + Count(Fields!SalesOrderNumber.Value).ToString()
      

    다음 다이어그램에서는 이 단계 후의 식 편집기를 보여 줍니다.

    식 편집 대화 상자의 그룹 텍스트 상자

  4. F5 키를 눌러 응용 프로그램을 빌드하고 보고서를 봅니다(옵션). 아래 다이어그램에서는 각 판매 직원 이름별로 그룹화된 테이블 행을 보여 줍니다. 각 그룹 머리글은 그룹의 자세히 행을 요약하고 판매 직원의 이름, 판매 수 및 총 판매량을 표시합니다.

    처리된 보고서의 테이블 그룹 보기

테이블 형식 보고서에서 그룹을 정렬하려면

  1. 테이블 데이터 영역을 선택하고 테이블 속성을 엽니다.

  2. 그룹 탭을 클릭합니다. 정의된 유일한 그룹인 table1_Group1이 자동으로 선택됩니다. 편집을 클릭합니다. 그룹화 및 정렬 대화 상자가 열립니다.

    열려 있는 대화 상자가 테이블 속성이 아니라 그룹화 및 정렬 속성인지 확인합니다. 테이블 속성 - 정렬 탭은 그룹이 정렬되는 방식이 아니라 자세히 행이 정렬되는 방식을 제어합니다. 다음 절차에서 자세히 행 정렬을 설정합니다.

  3. 정렬 탭을 클릭합니다. 정렬 대상 상자의 드롭다운 목록에서 **<식...>**을 선택합니다. 정렬 대상 식을 식 편집 상자에 입력합니다. 예를 들면 다음과 같습니다.

    =Count(Fields!SalesOrderNumber.Value)

  4. 확인을 클릭합니다.

    그룹화 및 정렬 대화 상자

  5. F5 키를 눌러 응용 프로그램을 빌드하고 보고서를 봅니다(옵션). 이제 각 판매 직원의 판매 수별로 보고서가 정렬됩니다.

    정렬된 테이블 그룹 보기

테이블 형식 보고서의 그룹 내에서 자세히 행을 정렬하려면

  1. 테이블을 클릭하여 열 핸들과 행 핸들이 테이블 위와 옆에 표시되도록 합니다.

  2. 모퉁이 핸들을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다. 테이블 속성 대화 상자가 열립니다.

    Note참고

    모퉁이 핸들은 열 핸들과 행 핸들이 만나는 위치의 핸들입니다.

  3. 정렬 탭의 정렬 대상 상자에서 =Fields!TotalSold.Value를 선택합니다. 방향 상자에서 Descending을 선택합니다. 이렇게 하면 높은 값부터 시작하여 판매량별로 정보 데이터가 정렬됩니다.

  4. 확인을 클릭합니다.

    테이블 속성 대화 상자는 다음 다이어그램과 같이 표시되어야 합니다.

    테이블 속성 대화 상자, 정렬 탭

  5. F5 키를 눌러 응용 프로그램을 빌드하고 보고서를 봅니다(옵션). 다음 다이어그램에서는 결과 보고서의 2페이지를 표시하여 자세히 행이 두 개 이상인 그룹을 보여 줍니다.

    정보 행에 그룹별로 정렬된 보고서 데이터 보기

테이블 형식 보고서의 바닥글에 요약 데이터를 추가하려면

  1. 테이블 바닥글 행에서 Sales Order 및 Total Sales 셀을 선택합니다. 선택한 셀을 마우스 오른쪽 단추로 클릭하고 셀 병합을 선택합니다.

    이렇게 하면 테이블의 모든 판매 합계에 형식을 지정할 수 있는 공간이 보다 많이 확보됩니다.

  2. 병합된 단일 셀을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  3. 드롭다운 목록에 다음 식을 입력합니다.

    =Sum(Fields!TotalSales.Value)

  4. 병합된 셀에 통화 형식을 적용합니다.

  5. 병합된 셀 옆에 있는 텍스트 상자 셀을 클릭하고 레이블을 만듭니다. 예를 들어 **Total Sold:**를 입력합니다. 이는 식이 아니라 단순 텍스트입니다.

  6. 머리글 행과 일치하도록 바닥글 행의 배경색을 설정합니다(옵션).

    다음 다이어그램에서는 테이블 정의를 보여 줍니다.

    바닥글이 포함된 보고서 정의 테이블

  7. F5 키를 눌러 응용 프로그램을 빌드하고 보고서를 봅니다(옵션). 렌더링된 보고서에서 보고서 도구 모음의 마지막 페이지 단추를 클릭하여 보고서의 마지막 페이지로 이동합니다. 맨 아래로 스크롤하여 총 판매 값을 확인할 수 있습니다.

    바닥글 결과가 포함된 테이블 보기

참고 항목

참조

Microsoft.Reporting.WinForms.ReportViewer.Drillthrough
Microsoft.Reporting.WinForms.LocalReport.SubreportProcessing
Microsoft.Reporting.WebForms.ReportViewer.Drillthrough
Microsoft.Reporting.WebForms.LocalReport.SubreportProcessing

개념

ReportViewer 태스크 스마트 태그 패널 사용

관련 자료

샘플 및 연습