Q&A

  • 퀵리포트에 공백 행 추가...
NO 품목  수량  비고
1    A      B      C
2    A'     B'     C'
3    A"     B"     C"
4
5
6
7
8
9
10

이런 식으로 보고서를 출력할려고 하는데요..
총 10번 행까지 출력할려고 합니다.
이중 임의의 데이터 갯수만큼(여기서는 3개의 행) 출력하고...
나머지 칼럼은 번호만 찍고자 합니다.

데이터 찍는건 디테일밴드를 사용해서 출력이 되는데..

그 아래의 번호만 찍는 게 잘 안되네요..

꼭 도와주세요...^^

소스 첨부...

var
  sTmp_OrderNo: String;
  sTmp_jmno   : String;
  nTmp_seqn   : Integer;
  nTt_qty     : Currency;
  nTt_wamt    : Currency;
  nQry_qty    : Currency;
  nQry_wprc   : Currency;
  nQry_wamt   : Currency;
  nii         : Integer;


//=======
// Form 관련
//=======
procedure TrptKPSZA70O.FormCreate(Sender: TObject);
begin
   qrPH_Title.Caption := '주     문     서';
end;

procedure TrptKPSZA70O.qrpReportBeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
   nii := 1;
end;

procedure TrptKPSZA70O.qrbpgHdrBeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
var
   sTmp_seqn : String;
begin
   qrPH_ToMan.Caption  := frmKPSZA70P.edAcpt_ToMan.Text;
   qrPH_RefMan.Caption := frmKPSZA70P.edAcpt_Ref.Text;

   sTmp_jmno           := qryKSLYY05Tsl05_jmno.Value;
   nTmp_seqn           := qryKSLYY05Tsl05_seqn.Value;
  
   if (nTmp_seqn <  10) then sTmp_seqn := '00' + IntToStr(nTmp_seqn);
   if (nTmp_seqn >= 10) and
      (nTmp_seqn < 100) then sTmp_seqn := '0' + IntToStr(nTmp_seqn);

   qryF_OrderNo.Caption := sTmp_jmno + '-' + sTmp_seqn;
end;

procedure TrptKPSZA70O.qrbDetailBeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
   qrDt_No.Caption   := IntToStr(nii);
   sl05_devc.Caption := qryKSLYY05Tsl05_devc.Value;
   sl05_ngdt.Caption := DateToStr(qryKSLYY05Tsl05_ngdt.Value);
   sl05_bigo.Caption := qryKSLYY05Tsl05_bigo.Value;

   nQry_qty  := qryKSLYY05Tsl05_qty.Value;
   nQry_wprc := qryKSLYY05Tsl05_wprc.Value;
   nQry_wamt := qryKSLYY05Tsl05_wamt.Value;

   sl05_qty.Caption  := Format('%0.0n', [nQry_qty]);
   sl05_wprc.Caption := Format('%0.0n', [nQry_wprc]);
   sl05_wamt.Caption := Format('%0.0n', [nQry_wamt]);

   Inc(nii);
end;

procedure TrptKPSZA70O.qrbSummaryBeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
  with dmlKEEM001P.qrySqlDql do
  begin
    Close;
    Sql.Clear;
    Sql.Add('SELECT SUM(sl05_qty), SUM(sl05_wamt)');
    Sql.Add('  FROM ksl0405t                      ');
    Sql.Add(' WHERE sl05_jmno = :sPrm_jmno');
    Sql.Add('   AND sl05_seqn = :sPrm_seqn');
    ParamByName('sPrm_jmno').Value := qryKSLYY05Tsl05_jmno.Value;
    ParamByName('sPrm_seqn').Value := qryKSLYY05Tsl05_seqn.Value;

    Open;

    nTt_qty := Fields[0].Value;
    nTt_wamt:= Fields[1].Value;
  end;
  qrS_qty.Caption  := Format('%0.0n', [nTt_qty]);
  qrS_wamt.Caption := Format('%0.0n', [nTt_wamt]);
end;

end.
1  COMMENTS
  • Profile
    윤신호 2004.02.28 20:18
    QuickRep1NeedData 이벤트에서 처리하면 가능할듯합니다.
    (실제로 해보지는 않았지만..^^)
    전역변수 cnt 를 정의하시고
    if cnt <10 then
        begin
        MoreData:=true;
        inc(cnt);
        end
    else
        MoreData:=false;

    요렇게하면 10개의 디테일밴드를 생성합니다.
    또한 여기서 query한 결과를 QRLabel에 출력해주시면 될듯....
    (quickrep의 dataset은 비우세요)    

    부디 잘 되시길...

    좋은 하루 되세요.