Q&A

  • 퀵리포트에서 qrexpr의 합계가 틀립니다. (부탁드립니다....제발....)
쌩초보가 프린터할라고 하니 머리가 터지는군요.........ㅜ.ㅜ


월계. 누계를 산출하느라 그룹푸터와 써머리에다가 qrexpr을 놓고 실행시켰습니다.

그룹헤더는 날짜로 지정했습니다.

reserafterprinter를 월계는 true 누계는false를 지정했습니다.

그런데 결과물의 합계가 이상하게 나옵니다.

결과물 :
--------------------------------------------------------
일자                       입고           출고
--------------------------------------------------------
2004.01.01              150
2004.01.12                             31.25
2004.01.25               90
2004.01.25                             76.88

                     (빈줄 15줄)

---------------------------------------------------------
    월  계                    240          1,306.96
---------------------------------------------------------
    누  계                    240          1,306.96
---------------------------------------------------------
입니다.

마지막 데이타 76.88에서 월계까지는 15칸의 빈칸이 있습니다.

도대체 어떻게 해야하는건지 검색해도 정확한 답이 없기에 질문을 드립니다.

부디 도와주시길 바랍니다.


제 소스입니다.

procedure Tsubulprtfm.QRep1NeedData(Sender: TObject;
  var MoreData: Boolean);
begin
  if prtq1.Eof then
    begin
  if rc < 19 then MoreData := true;
    end;

  if prtq1.Eof then
    begin
  if rc = 19 then
     MoreData := false;
    end;

  if prtq1.Eof then
    begin
  if (rc < 39) and (rc > 19) then MoreData := true; //rc가 20이면 19줄 더 찍기
    end;

  if not prtq1.Eof then
    begin
      if rc < 21 then MoreData := true
    else
      MoreData := False;
    end;
end;

procedure Tsubulprtfm.QRep1BeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
  rc := 0; // Row
  sumin := '0';
  sumout := '0';
  subulprtfm.prtq1.first;
end;

procedure Tsubulprtfm.QRBand4BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
var pum : string;
begin
  rc := rc + 1;
  if (rc > 20) and ( not prtq1.Eof ) then
  begin
    if not prtq1.Eof then
    rc := 1;
    subulprtfm.QRBand4.ForceNewPage := true;
  end
  else subulprtfm.QRBand4.ForceNewPage := False;

  with prtq1 do begin
    if not Eof then
    begin
      indate.caption := fieldbyname('indate').asstring;
      gname.caption := fieldbyname('gname').asstring;
      pum := fieldbyname('inpum').asstring;
      if trim(pum) = '' then
         begin
           inpum.caption := '';
         end else begin
           inpum.caption := FormatFloat('#,##0.00',StrToFloat(fieldbyname('inpum').asstring));
           pum := '';
         end;

      pum := fieldbyname('outpum').asstring;
      if trim(pum) = '' then
         begin
           outpum.caption := '';
         end else begin
           outpum.caption := FormatFloat('#,##0.00',StrToFloat(fieldbyname('outpum').asstring));
           pum := '';
         end;
      Next;
    end
    else
    begin
      indate.caption := '';
      gname.caption := '';
      inpum.caption := '';
      outpum.caption := '';
    end;
  end;
2  COMMENTS
  • Profile
    nilriri™ 2005.02.17 01:54
    퀵레포트의 dataset에는 쿼리컴포넌트나 데이터셋 스토어드프로시져등을 연결해 주시구요.

    qrexpr의 expression에 sum(필드명) 이렇게 만 써주시면 되는데요..

    format에 '#,##0.00' 이라고 해주시면 알아서 콤마찍어주고..

    left, center, right도 조정 가능합니다.

    그럼.

    http://www.qusoft.com에 가셔서 셈플몇개 가져다가 테스트해보세요.

    sample폴더에도 있을겁니다..^^;


    >쌩초보가 프린터할라고 하니 머리가 터지는군요.........ㅜ.ㅜ
    >
    >
    >월계. 누계를 산출하느라 그룹푸터와 써머리에다가 qrexpr을 놓고 실행시켰습니다.
    >
    >그룹헤더는 날짜로 지정했습니다.
    >
    >reserafterprinter를 월계는 true 누계는false를 지정했습니다.
    >
    >그런데 결과물의 합계가 이상하게 나옵니다.
    >
    >결과물 :
    >--------------------------------------------------------
    >일자                       입고           출고
    >--------------------------------------------------------
    >2004.01.01              150
    >2004.01.12                             31.25
    >2004.01.25               90
    >2004.01.25                             76.88
    >
    >                     (빈줄 15줄)
    >
    >---------------------------------------------------------
    >    월  계                    240          1,306.96
    >---------------------------------------------------------
    >    누  계                    240          1,306.96
    >---------------------------------------------------------
    >입니다.
    >
    >마지막 데이타 76.88에서 월계까지는 15칸의 빈칸이 있습니다.
    >
    >도대체 어떻게 해야하는건지 검색해도 정확한 답이 없기에 질문을 드립니다.
    >
    >부디 도와주시길 바랍니다.
    >
    >
    >제 소스입니다.
    >
    >procedure Tsubulprtfm.QRep1NeedData(Sender: TObject;
    >  var MoreData: Boolean);
    >begin
    >  if prtq1.Eof then
    >    begin
    >  if rc < 19 then MoreData := true;
    >    end;
    >
    >  if prtq1.Eof then
    >    begin
    >  if rc = 19 then
    >     MoreData := false;
    >    end;
    >
    >  if prtq1.Eof then
    >    begin
    >  if (rc < 39) and (rc > 19) then MoreData := true; //rc가 20이면 19줄 더 찍기
    >    end;
    >
    >  if not prtq1.Eof then
    >    begin
    >      if rc < 21 then MoreData := true
    >    else
    >      MoreData := False;
    >    end;
    >end;
    >
    >procedure Tsubulprtfm.QRep1BeforePrint(Sender: TCustomQuickRep;
    >  var PrintReport: Boolean);
    >begin
    >  rc := 0; // Row
    >  sumin := '0';
    >  sumout := '0';
    >  subulprtfm.prtq1.first;
    >end;
    >
    >procedure Tsubulprtfm.QRBand4BeforePrint(Sender: TQRCustomBand;
    >  var PrintBand: Boolean);
    >var pum : string;
    >begin
    >  rc := rc + 1;
    >  if (rc > 20) and ( not prtq1.Eof ) then
    >  begin
    >    if not prtq1.Eof then
    >    rc := 1;
    >    subulprtfm.QRBand4.ForceNewPage := true;
    >  end
    >  else subulprtfm.QRBand4.ForceNewPage := False;
    >
    >  with prtq1 do begin
    >    if not Eof then
    >    begin
    >      indate.caption := fieldbyname('indate').asstring;
    >      gname.caption := fieldbyname('gname').asstring;
    >      pum := fieldbyname('inpum').asstring;
    >      if trim(pum) = '' then
    >         begin
    >           inpum.caption := '';
    >         end else begin
    >           inpum.caption := FormatFloat('#,##0.00',StrToFloat(fieldbyname('inpum').asstring));
    >           pum := '';
    >         end;
    >
    >      pum := fieldbyname('outpum').asstring;
    >      if trim(pum) = '' then
    >         begin
    >           outpum.caption := '';
    >         end else begin
    >           outpum.caption := FormatFloat('#,##0.00',StrToFloat(fieldbyname('outpum').asstring));
    >           pum := '';
    >         end;
    >      Next;
    >    end
    >    else
    >    begin
    >      indate.caption := '';
    >      gname.caption := '';
    >      inpum.caption := '';
    >      outpum.caption := '';
    >    end;
    >  end;
    >
  • Profile
    김종현 2005.02.17 20:28
    역시 초보는 힘든게 맞네요......^^

    말씀하신대로 천천히 따라했는데도 역시 결과는....

    아무래도 포기해야 될것 같네요...........에휴............

    아무튼 해결을 안됐지만 관심가져주셔서 감사합니다.