对于一个DBGridEh控件,取其中的值,并累加。
例如:
字段1 字段2 字段3 ......
1 asd 3.2 8.1
2 ebw 2.9 7
3 aa 1.7 11
.
.
.
n epl 6 14当query查询后,在DBGridEh中显示,
对这个DBGridEh中的属性为float的字段进行累加
得到值。添加合计列在最后一行。合计 230.1 442.9问题1:我的DBGridEh中的字段是不固定的,所以怎样判断这个字段是float呢?
问题2:我怎样对float字段实现取值并累加呢?
例如:
字段1 字段2 字段3 ......
1 asd 3.2 8.1
2 ebw 2.9 7
3 aa 1.7 11
.
.
.
n epl 6 14当query查询后,在DBGridEh中显示,
对这个DBGridEh中的属性为float的字段进行累加
得到值。添加合计列在最后一行。合计 230.1 442.9问题1:我的DBGridEh中的字段是不固定的,所以怎样判断这个字段是float呢?
问题2:我怎样对float字段实现取值并累加呢?
建议用StringGrid做比较方便.
begin
//可以统计了
end;问题2:我怎样对float字段实现取值并累加呢?根本不需要,因为Dbgrideh控件可以自动完成!你只要设置DBGridEh的Column属性中的Footer属性就可以了!
我知道有人要这样说,问题是当DBGridEh的字段是固定的时候,才能用
“设置DBGridEh的Column属性中的Footer”这种方法。我是用select * from 表名
而且表不固定,有10多了。所以你说那种方法用不上。
我提问的意思是:能不能对DBGridEh中的数据取值并累加。还有那位兄弟知道呢?
其实方法有很多,关键是在灵活去用,而且要有效率。
1、你可以对表中的字段遍历一下,然后对相应的字段的值进行累加!
var
Colcount:Integer;
TotalValue:double;
begin
DataSet.First;
while not dataset.eof do
begin
for colcount:=0 to DbGridEh1.columns.count do
begin
if DbGridEh1.columns[colcount].fieldname='求累计的字段名' then
TotalValue:=TotalValue+DbGridEh1.columns[colcount].value
end;
dataset.next;
end;
end;
2、你可以在表打开的时候,判断哪一列是数值列啊,因为在打开的时候列是已知的啊!
var
ColCount:integer;
Curr_Col:TColumnEh;
begin
for ColCount:=0 to DbGridEh1.Columns.Count-1 do
begin
Curr_Col:=DbGridEh1.Columns[ColCount];
if Curr_Col.Field is TFloatField then
begin
//动态设置列的汇总属性啊!
end;
end;
end
不懂的地方,还要请教您呢?
begin
if DBGridEh1.DataSource.DataSet.FieldDefs[i].DataType=ftFloat then
// ftCurrency,ftInteger等等
begin
//增加footer
end;
end;剩下的你自己处理吧!
我怎么动态配置哦
我把没个表做个界面,固定DBGridEh就行了,我以前就是这样做的。sigh
没办法,写不出code来,只好用笨办法了。
QQ:184421270,请注明CSDN啊!