DBGRID中能进行四则运算吗?比如....请入内 请使用计算字段.(最好使用infopower的wwdbGrid) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我用的就是wwdbgrid,该怎么来?我只会用这东西来查询与统计,不知道运算在哪里? 在QUERY的beforepost事件中处理实得工资:=各条记录的基本工资+奖金+补贴-扣款;至于%:收入*税率% like 收入*税率/100 我有wwdbgrid,该怎么来?我只会用这东西来查询与统计,不知道运算在哪里? procedure TForm1.Table1BeforePost(DataSet: TDataSet);begin DataSet['实得工资'] := DataSet.FieldByName('基本工资').AsFloat + DataSet.FieldByName('奖金').AsFloat + DataSet.FieldByName('补贴').AsFloat + DataSet.FieldByName('扣款').AsFloat;end; 哦,原来是这样的。DataSet.FieldByName('补贴').AsFloat +//这里应该是“-”吧? DataSet.FieldByName('扣款').AsFloat;那乘除同理,只要改一下运算符就行了?如:begin DataSet['实得工资'] := DataSet.FieldByName('基本工资').AsFloat + DataSet.FieldByName('奖金').AsFloat + DataSet.FieldByName('补贴').AsFloat - DataSet.FieldByName('扣款').AsFloat * DataSet.FieldByName('税率').AsFloat ;//税率是%号的,不过这样会不会是对上面所有的和进行相乘了?若是想只对其中一项相乘又是怎么写呢?就是3*5+7-7,而不是3*(5+7-7)。刚才上面的是哪一种?是3*5+7-7、还是3*(5+7-7)这种?end; 1.先在Table控件中加入计算字段2.再在OnCalefiled 事件中加入你的如何计算的代码 细节请慢慢琢磨 在双击TTable或TQuery控件,在fields里加一计算字段。 wangxd1976(西门吹雪) 我想给你8分,但系统就是不肯把你的分加进去,总说我少8分,总分不是45,没办法,再不行的话就只能不给你了。 可以在DBGrid中的FieldChang等事件中加入你的计算代码。在计算代码中,可以使用数据源的数据集属性! //re:// DataSet['实得工资'] :=// DataSet.FieldByName('基本工资').AsFloat + // DataSet.FieldByName('奖金').AsFloat +// DataSet.FieldByName('补贴').AsFloat -// DataSet.FieldByName('扣款').AsFloat *// DataSet.FieldByName('税率').AsFloat ;//税率是%号的,不过这样会不会是对上面所有的和进行相乘了?//若是想只对其中一项相乘又是怎么写呢?//就是3*5+7-7,而不是3*(5+7-7)。刚才上面的是哪一种?//是3*5+7-7、还是3*(5+7-7)这种?'税率'是string的话就把'%'给干了用StrToFloat(DataSet.FieldByName('税率').AsString) * 0.01 就是乘一项啊3*5+7-7 //re:// DataSet['实得工资'] :=// DataSet.FieldByName('基本工资').AsFloat + // DataSet.FieldByName('奖金').AsFloat +// DataSet.FieldByName('补贴').AsFloat -// DataSet.FieldByName('扣款').AsFloat *// DataSet.FieldByName('税率').AsFloat ;//税率是%号的,不过这样会不会是对上面所有的和进行相乘了?//若是想只对其中一项相乘又是怎么写呢?//就是3*5+7-7,而不是3*(5+7-7)。刚才上面的是哪一种?//是3*5+7-7、还是3*(5+7-7)这种?'税率'是string的话就把'%'给干了用StrToFloat(DataSet.FieldByName('税率').AsString) * 0.01 就是乘一项啊3*5+7-7 要这么复杂吗?你到书店去看看SQL的语法书,上面有SQL关于字段运算的语法,你把他们拼一拼就好了。多看书把 有一点没有说清,DBGRID只是容器,它是数据库的外层,在这里你找到了语法,其语法还是得写在GRID的SQL属性或是TABLE的过滤器,两个的用法差不多,但还是有区别。多看看书比人家教你具体怎么写好 自已写一个控件不就行了,我有这种想法,请大家支持,我的EMAIL是[email protected]. 在delphi demo 中有一個定單例子用了運算字段,看一看就明白了(不是在dbgrid中實現的),用運算字段(在數據模塊中找) 双击 Table 控件,弹出一个字段编辑框,单击右键,选择 New Field 新建一个合计字段。对合计字段进行编辑就行。 yhec(^0^) 与Apollo47() 已经讲了,如你还不明白,我将具体做法教你:DbGrid是感知控件,它通过TDataSource感知Ttable因此你应在Ttable实现第一步:1、点TTable,弹出Fields Editor...2、点右键,选New Field,弹出编辑窗3、起一新字段名称:如实得工资,在type选对字段类型如Float4、在Filed Type 中选calculated5、点确认下一步:1、TTable的属性中AutoCalcFields选True2、在TTable的Event页的OnCalcFields处写代码(点击)3、代码为Table1实得工资.Value := Table1基本工资.Value +Table1奖金.Value +Table1补贴.Value -Table1扣款.Value OK!!! delphi Stringgrid初始化问题。 继续提问TIMER问题 richedit设置文本链接 大字体中的9号与小字体中的11号字体形状大小是一样的吗 ★★★★★Delphi编程经验总结★★★★★ 在TField.OnChange(字段更改事件)中,如何获得字段更改前的值(回答马上结贴) 紧急求救!!!!!!!!!! 关于DBGride的问题: 请问如何把Delphi的Debug信息屏蔽掉,即在编译期间不显示? 对象生成问题 请教数据库问题,急!急! 用Delphi做的好软件。 各位兄弟,我开发的三层的应用设计阶段已经完成,却被服务器配置卡住了,大家拉一把兄弟呀!
实得工资:=各条记录的基本工资+奖金+补贴-扣款;
至于%:收入*税率% like 收入*税率/100
begin
DataSet['实得工资'] :=
DataSet.FieldByName('基本工资').AsFloat +
DataSet.FieldByName('奖金').AsFloat +
DataSet.FieldByName('补贴').AsFloat +
DataSet.FieldByName('扣款').AsFloat;
end;
DataSet.FieldByName('扣款').AsFloat;
那乘除同理,只要改一下运算符就行了?如:
begin
DataSet['实得工资'] :=
DataSet.FieldByName('基本工资').AsFloat +
DataSet.FieldByName('奖金').AsFloat +
DataSet.FieldByName('补贴').AsFloat -
DataSet.FieldByName('扣款').AsFloat *
DataSet.FieldByName('税率').AsFloat ;//税率是%号的,不过这样会不会是对上面所有的和进行相乘了?若是想只对其中一项相乘又是怎么写呢?就是3*5+7-7,而不是3*(5+7-7)。刚才上面的是哪一种?是3*5+7-7、还是3*(5+7-7)这种?
end;
2.再在OnCalefiled 事件中加入你的如何计算的代码
细节请慢慢琢磨
在计算代码中,可以使用数据源的数据集属性!
// DataSet['实得工资'] :=
// DataSet.FieldByName('基本工资').AsFloat +
// DataSet.FieldByName('奖金').AsFloat +
// DataSet.FieldByName('补贴').AsFloat -
// DataSet.FieldByName('扣款').AsFloat *
// DataSet.FieldByName('税率').AsFloat ;
//税率是%号的,不过这样会不会是对上面所有的和进行相乘了?
//若是想只对其中一项相乘又是怎么写呢?
//就是3*5+7-7,而不是3*(5+7-7)。刚才上面的是哪一种?
//是3*5+7-7、还是3*(5+7-7)这种?'税率'是string的话就把'%'给干了
用StrToFloat(DataSet.FieldByName('税率').AsString) * 0.01
就是乘一项啊
3*5+7-7
// DataSet['实得工资'] :=
// DataSet.FieldByName('基本工资').AsFloat +
// DataSet.FieldByName('奖金').AsFloat +
// DataSet.FieldByName('补贴').AsFloat -
// DataSet.FieldByName('扣款').AsFloat *
// DataSet.FieldByName('税率').AsFloat ;
//税率是%号的,不过这样会不会是对上面所有的和进行相乘了?
//若是想只对其中一项相乘又是怎么写呢?
//就是3*5+7-7,而不是3*(5+7-7)。刚才上面的是哪一种?
//是3*5+7-7、还是3*(5+7-7)这种?'税率'是string的话就把'%'给干了
用StrToFloat(DataSet.FieldByName('税率').AsString) * 0.01
就是乘一项啊
3*5+7-7
对合计字段进行编辑就行。
DbGrid是感知控件,它通过TDataSource感知Ttable
因此你应在Ttable实现
第一步:
1、点TTable,弹出Fields Editor...
2、点右键,选New Field,弹出编辑窗
3、起一新字段名称:如实得工资,在type选对字段类型如Float
4、在Filed Type 中选calculated
5、点确认
下一步:
1、TTable的属性中AutoCalcFields选True
2、在TTable的Event页的OnCalcFields处写代码(点击)
3、代码为
Table1实得工资.Value := Table1基本工资.Value +Table1奖金.Value +Table1补贴.Value -Table1扣款.Value OK!!!