怎样计算Dbgrid中某列的总和 for i:=0 to dbgrid1.DataSource.DataSet.RecordCount-1 do begin if DbGrid1.Fields[i].FieldName='所求列的字段名' then sum:=sum+DbGrid1.Fields[i].Value; end ; 目前是这么写的,但是错的。 请教各位高手,谢谢
也可以sum:=0; for i:=0 to adoquery1.RecordCount-1 do sum:= sum+adoquery1FieldByName('单价列').AsFloat;
另外一些三方控件实现的求和效果比较好,cxGrid,GridEH之类 var bookMark: TBookMark; sum:=0; bookMark:=dbgrid1.DataSource.DataSet.GetBook; dbgrid1.DataSource.DataSet.DisableControls; dbgrid1.DataSource.DataSet.First; for i:=0 to dbgrid1.DataSource.DataSet.RecordCount-1 do begin sum:=sum+dbgrid1.DataSource.DataSet.FieldByName('求和字段名').Value; dbgrid1.DataSource.DataSet.Next; end; dbgrid1.DataSource.DataSet.GotoBook(bookMark); dbgrid1.DataSource.DataSet.EnableControls;
sum:=0; for i:=0 to adoquery1.RecordCount-1 do sum:= sum+adoquery1FieldByName('单价列').AsFloat;
根据你的dbGrid的数据源再做一个查询。
楼主可以使用GirdEh组件,带有这个功能的。另外也可以这样写:var Sum: Double; bk: TBook; begin Sum := 0; bk := DataSet.GetBook; DataSet.DisableControls; try while not DataSet.Eof do begin Sum := Sum + DataSet.FieldByName('').AsFloat; DataSet.Next; end; DataSet.GotoBook(bk); finally DataSet.EnableControls; DataSet.FreeBook(bk); end;
for i:=0 to adoquery1.RecordCount-1 do
sum:= sum+adoquery1FieldByName('单价列').AsFloat;
var
bookMark: TBookMark;
sum:=0;
bookMark:=dbgrid1.DataSource.DataSet.GetBook;
dbgrid1.DataSource.DataSet.DisableControls;
dbgrid1.DataSource.DataSet.First;
for i:=0 to dbgrid1.DataSource.DataSet.RecordCount-1 do
begin
sum:=sum+dbgrid1.DataSource.DataSet.FieldByName('求和字段名').Value;
dbgrid1.DataSource.DataSet.Next;
end;
dbgrid1.DataSource.DataSet.GotoBook(bookMark);
dbgrid1.DataSource.DataSet.EnableControls;
for i:=0 to adoquery1.RecordCount-1 do
sum:= sum+adoquery1FieldByName('单价列').AsFloat;
Sum: Double;
bk: TBook;
begin
Sum := 0;
bk := DataSet.GetBook;
DataSet.DisableControls;
try
while not DataSet.Eof do begin
Sum := Sum + DataSet.FieldByName('').AsFloat;
DataSet.Next;
end;
DataSet.GotoBook(bk);
finally
DataSet.EnableControls;
DataSet.FreeBook(bk);
end;