글쓴이 보관물: Toughman

C# ReportViewer 매개 변수 값 전달

개요

ReportViewer 는 .NET framework 기반에서 사용할 수 있는 보고서 컨트롤 입니다. 비주얼 스튜디오에 내장되어 있습니다. ReportViewer 를 이용해서 여러가지 형식의 보고서를 손쉽게 만들 수 있습니다. 크리스탈 리포트(Crystal Reports) 같은 기능을 한다고 생각하시면 됩니다. ReportViewer 매개 변수 값 전달 방법을 알아보도록 하겠습니다.

보고서로 매개 변수 값 전달

사용자의 입력사항이나 다른 정보를 보고서에 출력해야 하는 경우가 있습니다. 이런 값을 파라미터로 보고서에 전달해서 출력하는 방법을 알아보도록 하겠습니다. WinForm 기준으로 진행해 보도록 하겠습니다.

프로젝트를 생성하고 보고서 파일을 추가합니다.

보고서 파일 추가

보고서 파일 추가

보고서 파일을 열고 도구상자 창을 확인하면 보고서 항목이 나타납니다.

도구 상자의 보고서 항목

도구 상자의 보고서 항목

보고서 항목을 이용하여 보고서를 디자인 합니다. 예제에서는 어떤 수업을 진행한 내역을 출력하는 보고서를 디자인 한다고 가정하고 진행합니다.

입력란, 테이블을 선택해서 다음과 같이 보고서를 디자인 합니다. 항목 중 @tbName 이라는 것이 있는데 이것이 바로 값을 전달할 수 있게 해주는 매개변수 입니다. 보고서 데이터 창을 띄워 보면 매개변수 항목이 있습니다(보고서 데이터 창 메뉴를 찾을 수 없으면 Crtl+Alt+D 키를 누릅니다).

매개변수 항목

매개변수 항목

매개 변수를 선택하고 오른쪽 마우스 버튼을 클릭하면 [매개 변수 추가…] 메뉴가 나타납니다. 선택하면 다음과 같은 대화 상자가 나타납니다.

매개 변수 추가 대화 상자

매개 변수 추가 대화 상자

이름을 용도에 맞게 입력하고 데이터 형식이나 나머지 사항을 선택합니다. 그러면 매개 변수 폴더에 추가 됩니다. 추가된 매개변수 항목을 드래그 하여 보고서의 출력하고자 하는 위치에 놓습니다. 매개 변수의 값을 전달하는 코드는 다음과 같습니다.

printPreview.LocalReport.ReportEmbeddedResource = "ReportTest.Report3.rdlc";
printPreview.ProcessingMode = ProcessingMode.Local;

var reportParameter = new ReportParameter[1];
reportParameter[0] = new ReportParameter("tbName", "성명 : 홍길동");
printPreview.LocalReport.SetParameters(reportParameter);

var reportParameter = new ReportParameterCollection();
reportParameter.Add(new ReportParameter("tbName", "성명 : 홍길동"));
printPreview.LocalReport.SetParameters(reportParameter);

printPreview.LocalReport.Refresh();

printPreview.RefreshReport();

ReportViewer Control 의 이름은 printPreview이고 보고서 파일의 이름은 Report3.rdlc 입니다. 매개 변수에 값을 넘겨주는 방식은 두 가지가 있는데 편리하다고 생각하는 방식을 사용하면 됩니다. 4~6 행은 ReportParameter를 배열 형태로 정의해서 넘기는 방식입니다. 8~9 행은 ReportParameterCollection에 ReportParameter 항목을 추가해서 넘기는 방식입니다. 프로그램 실행 결과 화면은 다음과 같습니다.

전달된 매개 변수 값 출력

전달된 매개 변수 값 출력

존재하지 않는 매개 변수 이름을 지정하면 오류가 발생합니다. 테스트로 tbName2 로 변경하고 실행해 보면 다음과 같은 오류가 발생합니다. “이 보고서에 정의되지 않은 보고서 매개 변수 ‘tbName2’을(를) 설정하려고 했습니다.”

매개 변수 이름 불일치 오류

매개 변수 이름 불일치 오류

보고서 디자인 작업시 여러가지 항목을 마우스를 이용하여 원하는 위치에 놓기 어려운 경우가 있는데 Crtl 키를 누른 상태에서 커서키를 누르면 미세하게 조정할 수 있습니다. 속성에서 숫자를 직접 입력해서 위치를 지정할 수도 있습니다.

이번 포스트에서는 보고서의 매개 변수에 값을 전달하는 방법을 알아보았습니다.

쿠쿠 CRP-P0610FD

구매동기

여기서 소개한 쿠쿠 CRP-P0610FD 제품은 순전히 개인의 기호와 경험에 기초했습니다. 별도의 지원을 받은 사실이 없습니다.

기존에 사용하던 전기 압력밥솥의 취사 버튼이 제대로 눌러지지 않았습니다. 수십번 눌러야 한번 될까말까 하는 정도가 되었습니다. 수리를 할까 하다가 새로 구매를 하기로 했습니다. 기존의 제품이 보온은 제대로 되어 다른 용도로 사용하기로 했습니다.

기존 사용 제품

기존 사용 제품

기존에 사용하던 제품도 쿠쿠였고 큰 고장없이 오래 사용했고 만족스러웠습니다. 그래서 같은 브랜드의 제품을 구매하기로 마음먹었습니다.

일반 VS IH

검색을 해보니 가열 방식에 따라 가격차이가 많이 났습니다. IH가 밥맛이 좋다고 하는 의견도 있고 그것보다는 쌀과 밥물의 조정이 더 중요하다는 것 등 분분했습니다. 살짝 고민하다 IH 밥솥으로 한 밥과 일반 전기압력밥솥과의 맛의 차이를 구분할 정도는 아니라고 판단했습니다. IH 밥솥으로 지은 밥을 먹어보았는데 차이를 느끼지 못했습니다. 그래서 좀더 저렴한 일반 밥솥으로 구매하기로 결정했습니다.

분리세척

가장 중요하게 생각했던 부분은 밭솥 위쪽의 분리가능 여부였습니다. 오래 사용하다보니 코팅이 벗겨지고 청소도 용이하지 않아 보기도 좋지 않았습니다. 분리가 불가능 하니 전체를 교체해야 하는 문제가 있었습니다. 기존 제품의 최대 단점이라고 생각되었습니다.

분리 가능한 위쪽 부분

분리 가능한 위쪽 부분

저가형 제품은 기존과 구성이 같았지만 위쪽 부분을 분리해서 청소할 수 있는 제품이 나오고 있었던 것은 알고 있었습니다. 새로 구매를 한다면 꼭 분리세척이 가능한 제품을 사겠다고 마음먹었고 실제 구매에 가장 큰 영향을 주었습니다.

위쪽 부분만이 아니고 여러 부분을 분리해서 세척할 수 있도록 구성되어 있던 것이 마음에 들었습니다.

실제 사용할때까지는 몰랐는데 증기의 배출방향도 변경된 것을 알게 되었습니다. 증기를 기존제품은 바로 위쪽으로 세차게 배출했습니다. 수납장에 들어가 있는 경우 위치가 좀 높게 되는데 위쪽 천장에 뜨거운 증기가 닿지 않도록 변경한 것이 아닌가 생각되었습니다.

기능

기존 밥솥도 몇가지 기능이 있었지만 잡곡 정도만 사용해 보았습니다. 검색을 하면서 살펴보니 생각보다 많은 기능이 추가되어 있었습니다. 제 기준으로 가격도 부담이 될 정도는 아니었습니다.

백미쾌속은 대략 12~13분 전후에 밥이 되었고 냄비에 밥을 한 것같은 맛이 났습니다. 일반 백미는 시간이 더 소요되고 기존제품의 취사 모드와 크게 다르지 않은 것으로 생각됩니다. 잡곡 모드 취사도 잘 되었습니다.

백미쾌속 취사 모드 작동 모습

백미쾌속 취사 모드 작동 모습

시험삼아 영양죽 모드로 죽을 끓여 보았는데 시간이 대략 1시간 30분 정도 소요되었습니다. 백미밥을 기준으로 생각해서 최대 1시간 정도 소요될 것으로 예상했습니다. 예상과는 다르게 30분 정도 더 소요되었습니다. 실제 식사할 시간을 감안해서 취사하는 것이 좋을 것 같습니다.

이 외에도 다양한 기능이 있는데 필요에 따라 이용하시면 될 것 같습니다.

아쉬운 점

  1. 버튼
    밥솥의 버튼이 기존에 사용하던 제품과 동일한 것으로 생각되었습니다. 눌렀을 때 느낌이 비슷했습니다.  자주 누르는 버튼이 이전 제품과 같이 동일한 고장이 날 것 같다는 생각이 들었습니다.
  2. 보온 시 물방울 맺힘
    보온 자체는 잘 되는데 물방울이 맺히는 현상이 있었습니다. 조치 방법이 설명서에 나와있습니다. 정확하게 설정을 하지 못한 탓인지 그대로 해 보아도 그 현상이 사라지지 않았습니다.

쿠쿠 CRP-P0610FD 일부 단점이 있지만 전반적으로 만족한 상품입니다.