날씨 무쟈게 좋았던 일요일이었습니다 ^^;
이 좋은 날 집에서 일하고 있다니..
암튼 그림과 같이 리포트에 데이터가 나오구요 나머지 부분에 데이터가 없어도
그림처럼 공백으로 남겨 두려고 합니다.
그러니까 리포트에 라인이 10줄 정도 있고 데이터가 2개든 3개든
10개의 라인을 표시해 주고 싶거든요..
제가 리포트는 처음이라 예제보고 데이터를 보여주긴 했는데 여긴 도저히
모르겠습니다.
간단한 예제라고 만들어서 오려주시면 정말 고맙겠습니다.
예전에 퀵레포트 했던 경험으로는 이런 경우에 대해서 두가지 방법이 있었던것 같네요.
첫번째는 Query에 subdetail band를 사용한 경우 query 의해서 결정이 납니다.
결과의 recordcount를 먼저 구합니다. 즉 20라인씩 나와야한다면 mod를 사용해서 더 필요한 라인 수를 구합니다. recordcount가 3이라면 17라인이 더 나와야 겠죠.
select name from students where~
(+union Select '9999' from 가장간단한테이블 ) 17번 반복->한 row가 나오게
이 전체를 query로 날리면 됩니다. 레포트로 표시할때는 '9999'인경우는 공백으로 표시하죠.
두번째 방법은 레포트 페이지가 끝날 때의 event가 있을 겁니다. 이 이벤트에서 라인수를 체크해서 공백만 있는 밴드를 필요한 만큼 반복해서 출력하면 됩니다. 공백만 있는 밴드를 만들어서 처음에서 보이지 않게 했다가 끝페이지에 대해서 보이게 하고 필요한 라인수 만큼 보이게 하는 방법입니다.
전 델파이7이라 quickReport를 찾을 수가 없네요. 간단한 예제를 보여드리지
못하겠네요...
MsSQL2000서버의 Northwind의 Orders테이블을 연결해서 사용한 겁니다.
TDataBase와 TQuery를 수정해서 해보세요...
제쪽에선 정상적으로 13페이지가 나온다면 빈 라인은 빈칸으로 채우고 있습니다.
SubDetailBand를 출력한 다음 각 페이지 당 남은 라인수를 체크하기 위한 변수를 잘 지정해주시고 빈라인를 출력하기 위한 밴드의 needData이벤트에서
더 출력해야할 라인 수 만큼 지정해 주심될 거예요
QRSubDetail2 -> 빈라인을 출력할 밴드
QRSubDetail1 -> 데이터 출력 밴드 임.
procedure TForm1.QRSubDetail2NeedData(Sender: TObject;
var MoreData: Boolean);
begin
if lCount = 0 then -> 여기서 lCount가 더 출력해야할 라인수 입니다.
begin
moreData := fAlse;
end
else
begin
MoreDAta := true;
dec(lCount);
end;
end;
procedure TForm1.QRSubDetail1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
inc(rCount); -> rCount는 출력한 라인 수
dec(lcount); -> 더 출력해야할 라인수
if rCount > 20 then -> 페이지당 라인 수
begin
rCount := 0;
lCount := 20;
QuickRep1.NewPage;
end;
end;
첫번째는 Query에 subdetail band를 사용한 경우 query 의해서 결정이 납니다.
결과의 recordcount를 먼저 구합니다. 즉 20라인씩 나와야한다면 mod를 사용해서 더 필요한 라인 수를 구합니다. recordcount가 3이라면 17라인이 더 나와야 겠죠.
select name from students where~
(+union Select '9999' from 가장간단한테이블 ) 17번 반복->한 row가 나오게
이 전체를 query로 날리면 됩니다. 레포트로 표시할때는 '9999'인경우는 공백으로 표시하죠.
두번째 방법은 레포트 페이지가 끝날 때의 event가 있을 겁니다. 이 이벤트에서 라인수를 체크해서 공백만 있는 밴드를 필요한 만큼 반복해서 출력하면 됩니다. 공백만 있는 밴드를 만들어서 처음에서 보이지 않게 했다가 끝페이지에 대해서 보이게 하고 필요한 라인수 만큼 보이게 하는 방법입니다.
전 델파이7이라 quickReport를 찾을 수가 없네요. 간단한 예제를 보여드리지
못하겠네요...