在DBGride中确定各个要计算的字段的列,将列中的数据相加等计算就行了。
DBGride[2] := (DBGride[0] + DBGride[1]) / 2
DBGride[3] := (DBGride[0] + DBGride[1])
DBGride[2] := (DBGride[0] + DBGride[1]) / 2
DBGride[3] := (DBGride[0] + DBGride[1])
解决方案 »
- 能否设置DBGrid的属性,使得其中的一列为密码样式
- fastreport3 报表小写转换大写问题
- 怎样进行并口操作,向打印机发送命令??急,拜托!
- 求教编写外挂的技术原理?
- 难道这个问题真的很难?是DELPHI不如VC吗?怎么连做一个WIN画图程序都不行,高手进来啊
- 怎么传递一个指针给函数??
- 这样的进度条窗口是怎弄的?
- 一个关于DBGRID中自动生成行号的 问题?
- 在线等待各位救命,救救小弟,是关于sql.add(insert into 语句
- 请教各位,怎样判断在edit1.text中输入的是数安还是字符??
- 我下了一个delphi6企业汉化工具,为什么汉化不了我的delphi6,说我的delphi632。exe是未知版本
- 哪位大虾告诉我:Delphi6的升级包在哪里有下?
Select Chinese , Math, 'AVG' = (Chinese + Math) / 2 , 'Total' =
(Chines + Math) from Table_name Where ........
在DBGride 中多显示AVG, Total 两个字段就可以了。
在DBGrid中添加两个字段其DataSource设置为Query连接的DataSource
在OnCalculate() 事件中加入代码进行计算即可。
我怎么知道,单元格(每一个小格),从数学单元格移到了总分呢??另外这里都是分数还好计算,如果是单价*数量=总价中money与float怎么相互转换!
具体实现如下:
在TABLE控件里新建一个字段,(这个字段是你的库里所没有的。)
定义该字段为计算字段,具体内容由你自己指定。这样在DBGRID里把该字段显示出来就可以了。
什么程序也不用写。
但这种方法不大好。使用mrzho(mrzho)的方法罢。
我在数量与单价填上内容后,就把金额显示出来,到时后直接app..(0),写入数据库,怎么做?
select chinese,math (chinese+math) as total,(chinese+math)/2 as average from your talbeselect 语句本身就有计算功能。
好像不是insert();函数什么名字我忘记了:)
不好意思:)
2、在OnCalcFields事件里面进行计算字段的赋值,例如:
cdsDLYH.FieldByName('总分').AsInteger
:= cdsDLYH.FieldByName('数学').AsInteger
+ cdsDLYH.FieldByName('语文').AsInteger;
3、计算字段经过我的测试,在你退出数学这个字段的时候就自动计算,即焦点变化的时候就会自动进行计算;
4、至于你说说焦点移动的事件触发问题,也许你说的是这样,你的例子里面如果平均分是数据库里面有的字段,那么平均分的计算应该使用什么事件,如果你只有表格数据,那么可以使用DBGrid里面的OnColEnter,只要列一变换它就触发这个时间,在这个事件里面赋值平均分字段即可,注意在赋值前最好加上cdsDLYH.Edit这么一个语句,或者进行如下判定:
if cdsDLYH.Modified then
begin{如果本记录有记录信息变更,这更新平均分字段}
cdsDLYH.Edit;
……
end;
如果你想必须要移动到平均分字段才进行平均分的计算,那么,在OnColEnter事件里面加上类似:
if dbgDLYH.SelectedField.FieldName = '平均分' then
begin
进行平均分字段的赋值……
end;如果还不明白,请继续提问。