with adoquery do begin sql.clear; sql.text := 'select sum(某列) from 某表'; open; end; label1.caption := adoquery.field.fields[0].asstring;
DBGrid好象没有自动统计某列值,要不然就循环求和,要不然换一个其他的控件比如cxgrid
另外 DBGridEh有自动统计的功能
DBGridEh 的自动统计功能如何使用? 循环求和如何做?
WITH DBGRID.DATASET DO BEGIN FIRST; WHILE NOT EOF DO BEGIN SUMA := FIELDBYNAME('AAAA').ASFLOAT; NEXT; END; END;
方法很多: 1.利用SQL求和匯總SUM 2.代碼: ... sum:=0; for i:=0 to adoquery1.RecordCount-1 do sum:= sum+adoquery1FieldByName('求和列').AsFloat; ... 3.代碼: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;
begin
sql.clear;
sql.text := 'select sum(某列) from 某表';
open;
end;
label1.caption := adoquery.field.fields[0].asstring;
循环求和如何做?
BEGIN
FIRST;
WHILE NOT EOF DO
BEGIN
SUMA := FIELDBYNAME('AAAA').ASFLOAT;
NEXT;
END;
END;
1.利用SQL求和匯總SUM
2.代碼:
...
sum:=0;
for i:=0 to adoquery1.RecordCount-1 do
sum:= sum+adoquery1FieldByName('求和列').AsFloat;
...
3.代碼: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;