Q&A

  • [질문] Fast Report 에서 스트링그리드 출력
Fast Report 에서 스트링그리드 내용을 그대로 출력하려고 합니다.

for 문으로 스트링그리드의 RowCount - 1만큼 루프돌면서 한줄씩 찍어야 합니다.
그러나 결과는 앞의 레코드는 덮어씌워져서 없어지고, 마지막 레코드 1줄만 찍힙니다.
Data Band에 한 레코드를 찍고, 밴드를 추가하여 다음 레코드를 찍어야 되는데
배열로 밴드를 만들어야하는지, 아니면 Child Band말고 다른 밴드를 사용해야하는지
이것이 문제입니다.

아래는 리포트 포맷입니다.

번호        날짜        부서       A1               A2                  X1            <===== Report Title Band
xxxxx     xxxxxx    xxxxx    xxxxxxxx    xxxxxxxxxx    xxxxxxxx    <===== Child Band
xxxxx     xxxxxx    xxxxx    xxxxxxxx    xxxxxxxxxx    xxxxxxxx
xxxxx     xxxxxx    xxxxx    xxxxxxxx    xxxxxxxxxx    xxxxxxxx
xxxxx     xxxxxx    xxxxx    xxxxxxxx    xxxxxxxxxx    xxxxxxxx
xxxxx     xxxxxx    xxxxx    xxxxxxxx    xxxxxxxxxx    xxxxxxxx
2  COMMENTS
  • Profile
    김성일 2010.04.21 20:19
    fast report죄측 아래에 보시면 cross object가 있는데 이걸 databand위에
    올려 놓으시고 사용하시면 됩니다

    procedure Tform1.frxReportBeforePrint(Sender: TfrxReportComponent);
    var
    Cross: TfrxCrossView;

    begin
    if TfrxMemoView(Sender).Name = 'Cross1' then
    begin
    Cross := TfrxCrossView(Sender);

    for i := 0 to 그리드로우카운트 - 1 do
    begin
    Cross.AddValue([IntToStr(i+1)], ['No'], [IntToStr(i+1)]);
    Cross.AddValue([IntToStr(i+1)], ['번호'], [Chile band내용]);
    Cross.AddValue([IntToStr(i+1)], [날짜], [Chile band내용]);
    Cross.AddValue([IntToStr(i+1)], ['부서'], [Chile band내용]);
    Cross.AddValue([IntToStr(i+1)], ['A1''], [Chile band내용]);
    Cross.AddValue([IntToStr(i+1)], ['A2'], [Chile band내용]);
    Cross.AddValue([IntToStr(i+1)], ['A3'], [Chile band내용]);
    end;
    end;
  • Profile
    cdrd 2010.04.21 22:25
    김성일님 답변에 감사드립니다.
    CrossView를 이용하는 방법과 함께
    스트링그리드에 있는 데이터중에서 특정한 컬럼과 로우의 값을 레포트의 MemoView에 1:1로 매치해서 출력하는 방법은 없을까요?
    정리하자면
    스트링그리드 Row 1, Col 1 의 값을 MemoView1에
    Row 1, Col 2 의 값을 MemoView2에
    Row 1, Col 3 의 값을 MemoView3에
    출력하는 방법을 말합니다.

  • profile cdrd
    2010/04/21 17:55
  • Views3605
    Likes0
    Comments2
    Reports0
  • Tag List
  • 목록으로