问题如下:
要实现如下功能:
箱号  净重       累计
10    30。10      30。10
11    31。12      61。22
12    32。12      93。34
13    30。12      123。46
就是这样的逐行累计,结果存放于累计栏!!在QUICKREPORT中如何实现?
我原来是要这样实现的:
    tempfield.SetFieldType(ftfloat);
    tempfield.FieldName:='累积';
    BoxRS.Fields.Add(tempfield);
    BoxRS.Fields[2].SetFieldType(ftfloat);
   WeightTotal:=0;
    BoxRS.First;
    while not BoxRS.eof do
    begin
      WeightTotal:=WeightTotal+BoxRS.fieldbyname(BoxRS.Fields[1].DisplayName).AsInteger;
===》》可是提示这句出错。      BoxRS.fieldbyname(BoxRS.Fields[2].DisplayName).ASFloat:=integer(WeightTotal);
      BoxRS.next;
    end;
其中BOXRS为TADODATASET 存着 箱号和 净重

解决方案 »

  1.   

    用不着你这样呀,
    你只要摆一个TQRExpr,
    expression=sum(净重)
      

  2.   

    箱号  净重       累计
    10    30。10     sum(净重)
      

  3.   

    你的BOXRS不在编辑状态当然会出错啦。
    其实你可以这样实现的:select 箱号,净重,累计=(select sum(净重) from tablename b where b.箱号<=a.箱号)
    from Tablename a
    order by 箱号
      

  4.   

    好像没有特别好的方法,只能每一个需要累计的列定义个变量,
    每输出一条做一次累加,一条条累加下去了.
    如果是delphi报表,只能建立一个临时表了,先算好所有数据存入临时表,然后从临时表输出到报表中去。  可以用存储过程来实现建表计算和删表的操作。
      

  5.   

    我昨晚已经实现了该功能了,与findcsdn的方法一样。那还有没有其他方法呢????