[SUM(<frxDBDataset1."status">,MasterData1)]都是最后一行的值  为什么呢?

解决方案 »

  1.   

    你的表达式没有错,估计你放的地方不对,应该放在报表合计的Band上!
      

  2.   


    是放在合计的Band那,试了很多Band,都不行我是用adoquery
      

  3.   

    有问题的 ;你最好写语句实现:var
      fSum:double; //定义变量
             
    procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
    begin
      //这个是在 主数据 打印前的事件写 补充:打印后事件也可以
      fSum:=fSum+<frxdbdtst1."cost">;              
    end;procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);
    begin
      //这个在你 报表合计 打印前 写 ,这样写可以自动获取变量的值
      Memo1.Text:='[fSum]'                            
    end;begin
       fSum:=0;  //初始化        
    end.
    这里有个毛病 如果你的报表时Double Pass 值将变成原来的两倍,因为重复计算了,自己控制一下就行了
      

  4.   

    请问为什么我的MasterData1OnBeforePrint只执行两次呢?
    我有打勾Double Pass,那等于才执行一次?可我MasterData1的记录 有10条
      

  5.   

    就是说fSum 只等于2 ,我的记录有10条的,fSum 应该等于10才对procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
    begin
      fSum:=fSum+1;              
    end;
      

  6.   

    当然是等于2 ,就是打印了两次MasterData1。问题我知道出在哪里了。是我的代码的问题procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
    begin
      //这个是在 主数据 打印前的事件写 补充:打印后事件也可以
      fSum:=fSum+<frxdbdtst1."cost">;              
    end;
    //不应该写在这里!你的MasterData1里面放了Memo了吧,应该在Memo的打印前事件里写
    // 是我的问题,不好意思 太大意了
      

  7.   


    你的MasterData1没有放Memo吗,没有的话怎么显示数据呢!
      

  8.   

    我是直接在MasterData1 放入 TfrxCrossView 显示的
      

  9.   

    你方便上传一下你报表的截图,没报表讲也挺累的。我告诉一个简单方法吧,你在Delphi里面写代码先把值选出来 然后再赋到报表上面!
      

  10.   

    这是我报表图
    http://image161.poco.cn/mypoco/myphoto/20100512/20/5521922720100512204230060.jpg
      

  11.   

    你在frxCrossView里面是“0”的Memo 打印前写
      

  12.   

    奇怪,为什么我在frxCrossView里面是“0”的Memo 的OnBeforePrint

    frxCrossView的OnBeforePrint 写都是错误的值 一个是16000 一个是200
     procedure Cross1OnBeforePrint(Sender: TfrxComponent);
    begin
       fSum:=fSum+<frxDBDataset1."数量">;  
    end;