如何统计DBgrid内显示的记录个数,如何计算DBGrid内某一列的和?我很急! 你可以求你的DBGrid对应的数据源的纪录的个数呀!这不就归结到查询和统计的问题了吗?记录个数就是RecordCount.某一列的和就是某一字段的和,用查询语句或者循环求解都可以。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 LABEL1.CAPTION:=INTTOSTR(TABLE1.RECORDCOUNT);SELECT SUN(SL) FROM TABLE;LABLE2.CAPTION:=FLOATTOSTR(SUN(SL));即可实现! 我用的是query组件,sql语句是根据用户输入动态生成,很复杂,我不想再改;况且我用的是Sybase Adaptive Server Anywhere 6.0数据库(c/s结构),相信你们也看过别人的帖子,RecordCount根本不起作用,不管怎样,都是-1,难道就在DBgrid组件里就不能统计记录个数和计算某列的和吗?急盼解答!! 好像不好使吧!其实静态或动态无所谓。但这个代码一定要的QUERY.OPEN之后写才会有用的.否则则不可以啦! 我的方法不算高效//数据保存之后的事件加const cKeyFields = 'Field1'; //不会重复的字段集 可以是"Field1;Field2;Field3" cNumberField = 'Field2';var vSum: Real; vRecordCount: Integer; vKeyValues: Variant;begin vKeyValues := DataSet[cKeyFields]; //保存关键值 vRecordCount := 0; vSum := 0; DataSet.Frist; while DataSet.Eof do begin vSum := vSum + DataSet.FieldByName(cNumberField).AsFloat; Inc(vRecordCount); DataSet.Next; end; DataSet.Locate(cKeyFields, vKeyValues, []); //回到以前的位置 { vSum,vRecordCount用吧 }end; 不要想通过DBGrid想要操作表要通过DBGrid.DataSource.DataSet 早说过了RecordCount根本不起作用,我知道是在在query1.open之后用,要用TADOQuery组件才行,我又不想换控件,其实可以用 select count(*),sum(field1)……语句可以,但我说过,我的sql语句是动态生成,很复杂,我不想再改!zswang(zs)的方法有些繁琐,不很好! 不是通过DBGrid来操作表,而只是统计DBGrid内的记录个数和某列求和 query1.first; while not query1.Eof do begin count1:=count1+1; query1.next; end; label2.caption:='共'+inttostr(count1)+'条记录';我是这样做的,虽然不够简明。 这样的记录怎么做?? 这个控件哪里有下载的?TWLSizePanel delphi中如何安装第三方控件? 请问怎么判断软件在当前计算机的第一次运行? 无线点菜系统 键盘鼠标记录回放的问题 下象棋得可用分 散分~~~~~~~~~~~~~~~~~~~~~~~~ 请各位帮我分析分析这一份简历,来者有分 样在一个MDI初始的时候就打开一个MDIchild窗口呢?frmMain中show ,create,active时均不可以。 Delphi6帮助里的例子,运行时却出现错误 数组定位的问题,谢谢!
SELECT SUN(SL) FROM TABLE;
LABLE2.CAPTION:=FLOATTOSTR(SUN(SL));即可实现!
Sybase Adaptive Server Anywhere 6.0数据库(c/s结构),相信你们也看过别人的帖子,RecordCount根本不起作用,不管怎样,都是-1,难道就在DBgrid组件里就不能统计记录个数和计算某列的和吗?急盼解答!!
但这个代码一定要的QUERY.OPEN
之后写才会有用的.否则则不可以啦!
//数据保存之后的事件加
const
cKeyFields = 'Field1'; //不会重复的字段集 可以是"Field1;Field2;Field3"
cNumberField = 'Field2';
var
vSum: Real;
vRecordCount: Integer;
vKeyValues: Variant;
begin
vKeyValues := DataSet[cKeyFields]; //保存关键值
vRecordCount := 0;
vSum := 0;
DataSet.Frist;
while DataSet.Eof do begin
vSum := vSum + DataSet.FieldByName(cNumberField).AsFloat;
Inc(vRecordCount);
DataSet.Next;
end;
DataSet.Locate(cKeyFields, vKeyValues, []); //回到以前的位置
{ vSum,vRecordCount用吧 }
end;
要通过DBGrid.DataSource.DataSet
要用TADOQuery组件才行,我又不想换控件,
其实可以用 select count(*),sum(field1)……语句可以,但我说过,我的sql语句是动态生成,很复杂,我不想再改!zswang(zs)的方法有些繁琐,不很好!
while not query1.Eof do
begin
count1:=count1+1;
query1.next;
end;
label2.caption:='共'+inttostr(count1)+'条记录';我是这样做的,虽然不够简明。