Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[2534] [답변] VVS5B8W4/ QuickReport에서 OnAfter/BeforePrint
hywroom [ ] 1461 읽음    1998-04-25 11:47

안녕하세요. 제가 알고 있는 방법을 설명하겠습니다.

도움이 되면 좋은데....
OnBeforePrint는 퀵리포터에서 대부분의 출력 오브젝이 가지고 있는 이벤트입니다.

중복되는 자료의 출력을 제한하려면 아마도 디테일밴드의 OnBeforeEvent를 이용하시면

될 겁니다. 예를 들어 주문내용을 출력하려는데 고객코드가 같은 것은 출력하지 않는다고

가정하면 아래와 같을 겁니다.

일단 폼선언부에서 변수로

BeforeCustomCo : string;이라고 선언해 둡니다. 그리고

디폴트값을 폼 OnShow이벤트에서 정의합니다.

BeforeCustomCo := '';

그리고 테이블명은 aTable이라고 가정하고 고객코드 필드명은

CustomCo라고 가정합니다.

그리고 아래의 디테일 OnBeforePrint를 정의합니다.

procedure TRepFm.DetailBandBeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
if  aTable.FieldByName('CustomCo').AsString = BeforeCustomCo then
PrintBand := False; // False이면 현재 레코드는 출력하지 않음.
end;

위의 예는 아예 중복되는 레코드자체를 아예 출력하지 않는 경우이고, 다음과 같은

가정도 할 수 있습니다. 즉 중복되는 레코드를 출력을 하기는 하는데, CustomCo와

같이 중복되는 필드의 정보는 연속해서 찍을 필요가 없는 경우지요.

즉 주문내역 목록을 아래와 같이 출력할 경우입니다.
----------------------------------------
고객코드  고객성명  제품명 수량  단가    금액
----------------------------------------
001          홍길동     라디오   10      100    1000
               홍길동      TV         1     1000    1000
002          춘향이      비디오    1      100      100
               춘향이      라디오    6      100      600

위와 같이 고객코드는 중복해서 출력할 필요가 없는 경우에는 디테일 밴드의

OnBeforeEvent를 이용하는 것이 아니라  고객코드를 출력하기 위한 TQRDBText의

OnPrint이벤트를 이용합니다.

예를 들어 고객코드를 출력하기 위한 TQRDBText의 이름을 TxtCustomCo라고

정의 했다면 아래와 같이 이벤트가 생성됩니다.

procedure TRepFm.TxtCustomCoPrint(sender: TObject; var Value: string);
begin
if  aTable.FieldByName('CustomCo').AsString = BeforeCustomCo then
Value := ''; // Value 값이 출력될 문자열입니다.
end;

그럼 좋은 하루 되세요....



+ -

관련 글 리스트
2534 [답변] VVS5B8W4/ QuickReport에서 OnAfter/BeforePrint hywroom 1461 1998/04/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.