RT

解决方案 »

  1.   

    设两个变量pagetotal和total
      在detail的beforeprint 中:
       pagetotal:=pagetotal+字段的值
       total:=tatal+字段的值  
      固定每一页要打多少行,在换页的时候将字段的值pagetotal,total值去出来,然后将pagetotal清零
      

  2.   

    在打印内容所在BAND的BEFOREPRINT事件中判断:
    比如在PAGEFOOTER的BEFOREPRINT事件中判断、累加:页合计、累计
      

  3.   

    放一个Band,设定为Footer,计算字段好久没用DELPHI,大概是这样的
      

  4.   

    我一见星星的问题就发毛
    不过你的要求只要在页脚放一个QRExpr,将其RESETAFTERPRINT设为TRUE,就可以分页汇总.
    在将HASSUMMARY设为TRUE,也放一个QRExpr,在最后页可以求出合计
      

  5.   

    做一个计数器对象,
    type
      TCounter = class
        FCountByPage: Integer;   // 每页的记录数
        FValueByPage: Extended;  // 每页的统计值 (例如合计金额)
        FCountByPrint: Integer;  // 所有打印的记录数
        FValueByPrint: Extended; // 所有打印的数值
      public
        procedure Init(level: Integer); // 初始化统计变量
        procedure AddValue(value: Integer; Level: Integer); overload; // 增加统计记录数
        procedure AddValue(value: Extended; Level: Integer): overload; // 增加统计金额
        procedure NewPage; // 对页统计变量进行相应的初始化
      end;  在DetailBand的AfterPrint事件中增加 TCounter.AddValue 调用
      在PageFooter的AfterPrint事件中或者PageHeader的BeforePrint事件中增加 TCounter.NewPage 调用  注意:如果使用了预览后打印,要在预览完成后对 TCounter 进行初始化,否则打印时,统计的数值会累加两次.如果统计比较简单,可以采用QRExpr控件,不过数据集是TStoredProc 时,好像不是太好用。
      

  6.   

    本页合计可在HasPageFooter加入QRExpr,但切记QRExpr1.ResetAfterPrint:= True;
    总计可在HasSummary加入QRExpr,但切记QRExpr2.ResetAfterPrint:= False;
    Ok!别忘了加分啊!