QuickReport分组小计变成了累计(连DEMO都是如此),如何实现小计?

时间:2021-02-18 15:12:22
我的报表里想按人员分组小计,分组是成功的,组头显示人员姓名,组尾想显示按人员进行的小计,结果错误。
    我组尾里使用了rbGroupFooter,在上面加了QRExpr1,Expression设置为SUM(字段名),可结果却是累计数。请问大侠如何解决?

5 个解决方案

#1


路过,顶下

#2


QRSubDetail的FooterBand属性要指定小计的QRBand

#3


楼上的,报表里没有用到QRSubDetail,而是使用了rbDetail,因为不是多层分组,只是将一个表按业务员分组。
    所以只用了QRGroup、rbDetail和rbGroupFooter。
    QRGroup的FooterBand属性指定了小计的QRBand——rbGroupFooter

#4


论坛人气为何如此不旺啊。

#5


你在报表中设计2个ADOQUERY,QryMaster,QryDetail,QryDetail的DataSource指向Master,
在QuickRep1BeforePrint中做分组查询.你试试
我以前做过类似报表.
procedure TQr_typeRep.QuickRep1BeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
  with QryMaster do
  begin
      Close;
      SQL.Clear ;
      IF A_S_OP=FALSE THEN SQL.Add('select * from PZDICT where PLNO='''+Ls_PLNO+''' ORDER BY PLNO')
      ELSE SQL.Add('select * from PZDICT ORDER BY PLNO');
      Open ;
  end;

  with QryDetail do
  begin
    CLOSE;
    SQL.CLEAR;
    SQL.ADD('SELECT * FROM PZDAT');
    SQL.ADD('WHERE PZDAT >= '+FormatDateTime('yyyy-mm-dd',L_DTP_START));
    SQL.ADD('  AND PZDAT <= '+FormatDateTime('yyyy-mm-dd',L_DTP_END  ));
    SQL.ADD('  AND LEFT(PZENO,2)=:PLNO');
    SQL.ADD('  ORDER BY BNENO,PZDAT,PZTME ');
    Open;
  end;

end;
PLNO就是分组条件

#1


路过,顶下

#2


QRSubDetail的FooterBand属性要指定小计的QRBand

#3


楼上的,报表里没有用到QRSubDetail,而是使用了rbDetail,因为不是多层分组,只是将一个表按业务员分组。
    所以只用了QRGroup、rbDetail和rbGroupFooter。
    QRGroup的FooterBand属性指定了小计的QRBand——rbGroupFooter

#4


论坛人气为何如此不旺啊。

#5


你在报表中设计2个ADOQUERY,QryMaster,QryDetail,QryDetail的DataSource指向Master,
在QuickRep1BeforePrint中做分组查询.你试试
我以前做过类似报表.
procedure TQr_typeRep.QuickRep1BeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
  with QryMaster do
  begin
      Close;
      SQL.Clear ;
      IF A_S_OP=FALSE THEN SQL.Add('select * from PZDICT where PLNO='''+Ls_PLNO+''' ORDER BY PLNO')
      ELSE SQL.Add('select * from PZDICT ORDER BY PLNO');
      Open ;
  end;

  with QryDetail do
  begin
    CLOSE;
    SQL.CLEAR;
    SQL.ADD('SELECT * FROM PZDAT');
    SQL.ADD('WHERE PZDAT >= '+FormatDateTime('yyyy-mm-dd',L_DTP_START));
    SQL.ADD('  AND PZDAT <= '+FormatDateTime('yyyy-mm-dd',L_DTP_END  ));
    SQL.ADD('  AND LEFT(PZENO,2)=:PLNO');
    SQL.ADD('  ORDER BY BNENO,PZDAT,PZTME ');
    Open;
  end;

end;
PLNO就是分组条件