问题如下:
要实现如下功能:
箱号 净重 累计
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 存着 箱号和 净重
要实现如下功能:
箱号 净重 累计
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 存着 箱号和 净重
你只要摆一个TQRExpr,
expression=sum(净重)
10 30。10 sum(净重)
其实你可以这样实现的:select 箱号,净重,累计=(select sum(净重) from tablename b where b.箱号<=a.箱号)
from Tablename a
order by 箱号
每输出一条做一次累加,一条条累加下去了.
如果是delphi报表,只能建立一个临时表了,先算好所有数据存入临时表,然后从临时表输出到报表中去。 可以用存储过程来实现建表计算和删表的操作。