QReport를 작성중입니다.
PrintPreview로 보면
rbDetail Band에서는 QRDBText 콤퍼넌트의 값이 제대로 나오는데
rbPageFooter Band에서는 QRDBText콤퍼넌트의 값이 다음 사람의 값이 나옵니다.
그러니깐 Detail Band와 PageFooter Band의 값이 일치하지 않습니다.
PageFooter Band에서는 첫번째 사람의 값은 나오질않고 두번째 사람부터 밀려서
값이 나옵니다.
DataSet은 같은 DataSet을 사용합니다.(같은 필드로 테스트 결과입니다.)
무슨 이유인지 답답하네요..
> QReport를 작성중입니다.
> PrintPreview로 보면
> rbDetail Band에서는 QRDBText 콤퍼넌트의 값이 제대로 나오는데
> rbPageFooter Band에서는 QRDBText콤퍼넌트의 값이 다음 사람의 값이 나옵니다.
> 그러니깐 Detail Band와 PageFooter Band의 값이 일치하지 않습니다.
> PageFooter Band에서는 첫번째 사람의 값은 나오질않고 두번째 사람부터 밀려서
> 값이 나옵니다.
> DataSet은 같은 DataSet을 사용합니다.(같은 필드로 테스트 결과입니다.)
> 무슨 이유인지 답답하네요..
>
이재식 Wrote :
안녕하세요?
류동균님께서 이미 정확한 답변을 해주셨습니다.
제가 좀 보충설명을 추가하고자 이렇게 글을 씁니다.
우리가 DetailBand의 BeforePrint와 AfterPrint이벤트를 테스트해보면
이 이벤트까지는 서로 같은 레코드커서를 가지고 있는 것을 알 수 있습니다.
즉, DetailBand의 AfterPrint이벤트를 벗어나면 다음 레코드로 커서가
이동했다고 보시면 될 것입니다.
그렇기때문에 PageFooter밴드에서는 다음 레코드가 출력이 됩니다.
만약 레코드개수가 1페이지 분량이 넘어가는 것이 아니라면
pageFooter밴드에 출력되는 값은 항상 맨 마지막에 있는 레코드가 되겠죠.
이 문제는 pageFooter밴드에 QRLabel를 올려놓으시고요,
DetailBand의 afterPrint이벤트에 다음처럼 코딩을 합니다.
LastPrint
:= Table1(DataSet에 연결된 테이블명).FieldByName('출력할필드명').asString(타입) ;
그리고, pagefooter의 QRLabel의 onPrint이벤트에 다음처럼.
value := LastPrint ;
여기서, LastPrint은 private에 선언된 변수입니다. 가령
LastPrint : string ;