导航:
论坛 -> 未知:1
斑竹:
作者:
疯子
▲△△△△
-
2003/7/14 12:16:18
标题:
在DBgrid中如何对字段进行运算?
浏览:4777
加入我的收藏
楼主:
在DBgrid中如何对字段进行运算? 如,有字段名为“数量,单价,总价”那么如何在DBgrid中输入数据后直接将结果运算出: 总价=数量*单价
----------------------------------------------
作者:
2003/7/14 14:48:19
1楼:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); begin if Field.FieldName='总价' then begin if (DBGrid1.DataSource.DataSet.FieldByName('数量').AsString<>') and (DBGrid1.DataSource.DataSet.FieldByName('单价 ').AsString<>') then begin DBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,IntToStr(DBGrid1.DataSource.DataSet.fieldbyname('数量').AsInteger*DBGrid1.DataSource.DataSet.fieldbyname('单价').AsInteger)); end; end; end; 不保存计算结果
----------------------------------------------
-
作者:
dgt (dgt)
★☆☆☆☆
-
普通会员
2003/7/14 16:42:04
2楼:
请问:价格一般不是整数,不能用AsInteger,怎么办?
----------------------------------------------
http://zhd21.533.net/
作者:
2003/7/14 16:44:54
3楼:
DBGrid1.DataSource.DataSet.FieldValues['数量']*DBGrid1.DataSource.DataSet.FieldValues['单价']
----------------------------------------------
-
作者:
dgt (dgt)
★☆☆☆☆
-
普通会员
2003/7/14 17:02:07
4楼:
我也遇到这样的问题,谢谢高手的帮助!
----------------------------------------------
http://zhd21.533.net/
作者:
dgt (dgt)
★☆☆☆☆
-
普通会员
2003/7/15 7:22:15
5楼:
请问运算后的值以什么类型保存在总价中,代码是什么?
----------------------------------------------
http://zhd21.533.net/
作者:
dgt (dgt)
★☆☆☆☆
-
普通会员
2003/7/16 0:50:52
6楼:
不能运行! 应该有var,但是有关的变量的类型如何设置?使'总价'由电脑算出并将数值填上.请朋友们指点!
----------------------------------------------
http://zhd21.533.net/
作者:
bbhorse (xinhua2008)
★☆☆☆☆
-
盒子活跃会员
2003/7/16 8:05:57
7楼:
是不是要加个strtofloat()转换一下才行呀!
----------------------------------------------
愿和所有喜欢DELPHI的人做朋友!
作者:
dgt (dgt)
★☆☆☆☆
-
普通会员
2003/7/16 12:07:47
8楼:
还是不行,请高手完整地做一遍,谢谢!
----------------------------------------------
http://zhd21.533.net/
作者:
2003/7/16 14:32:26
9楼:
设置ADODataSet的属性LockType为ltBatchOptimistic; 然后: procedure TForm1.ADODataSet1BeforePost(DataSet: TDataSet); begin if (DataSet.FieldByName('单价').AsString<>') and (DataSet.FieldByName('数量').AsString<>') then DataSet.FieldValues['总价']:=DataSet.FieldValues['单价']*DataSet.FieldValues['数量']; end;
----------------------------------------------
-
作者:
dgt (dgt)
★☆☆☆☆
-
普通会员
2003/7/16 19:21:43
10楼:
运行以后,输入单价和数量,但是不显示总价的数啊. 好像要把 DataSet.FieldValues['总价'] 再转为String,还要想法让它填进'总价'栏才行. 不知如何写代码?
----------------------------------------------
http://zhd21.533.net/
作者:
2003/7/17 8:56:55
11楼:
用ADO控件,设置属性.同上.
----------------------------------------------
-
作者:
2003/7/17 9:51:44
13楼:
对啊!在你的数据集上加一个计算机字段不就解决了吗!
----------------------------------------------
-
作者:
dgt (dgt)
★☆☆☆☆
-
普通会员
2003/7/17 12:54:05
14楼:
有'总价'字段啊. 按9楼朋友说的做了啊, 运行,输入单价和数量的值后,'总价'栏不显示数, 我太菜了,没有学会,真不好意思!
----------------------------------------------
http://zhd21.533.net/
作者:
2003/7/17 13:05:59
15楼:
属性设置了没有? 代码是在数据集BeforePost事件下(只真对ADO控件) 数据库里要有'总价'字段
----------------------------------------------
-
作者:
dgt (dgt)
★☆☆☆☆
-
普通会员
2003/7/17 13:45:44
16楼:
数据库里有'总价'字段,设置等都按9楼样式做了
----------------------------------------------
http://zhd21.533.net/
作者:
2003/7/17 14:14:39
17楼:
不好意思, 数据库里应还有一个主建字段或不能重复的字段(如:自动编号) 设置ADODataSet的属性LockType为ltOptimistic; 代码9楼
----------------------------------------------
-
作者:
dgt (dgt)
★☆☆☆☆
-
普通会员
2003/7/17 14:44:54
18楼:
数据里有主键字段ID(自动编号) '设置ADODataSet1的属性LockType为ltOptimistic;' 做了. 而且,ADODataSet1也连到数据库了. 但是填入'单价'数量'后,'总价'栏老是空白.
----------------------------------------------
http://zhd21.533.net/
作者:
2003/7/17 15:02:04
19楼:
不会吧!但我的能运行 代码是9楼的(其它代码不要)
----------------------------------------------
-
作者:
dgt (dgt)
★☆☆☆☆
-
普通会员
2003/7/17 16:31:09
20楼:
可能连接数据库时,没有连接上,你用的哪个provider?我用的是Jet.OLEDB.4.0,对不对啊?
----------------------------------------------
http://zhd21.533.net/
作者:
2003/7/17 16:33:34
21楼:
对 贴代码来看看!
----------------------------------------------
-
作者:
dgt (dgt)
★☆☆☆☆
-
普通会员
2003/7/17 16:56:57
22楼:
procedure TForm1.ADODataSet1BeforePost(DataSet: TDataSet); begin if (DataSet.FieldByName('单价').AsString<>') and (DataSet.FieldByName('数量').AsString<>') then DataSet.FieldValues['总价']:=DataSet.FieldValues['单价']*DataSet.FieldValues['数量']; end;
----------------------------------------------
http://zhd21.533.net/
作者:
dgt (dgt)
★☆☆☆☆
-
普通会员
2003/7/17 17:08:20
23楼:
对了啊!谢谢! 要按添加按钮点一下,就对了!!!啊!啊!
----------------------------------------------
http://zhd21.533.net/
作者:
dgt (dgt)
★☆☆☆☆
-
普通会员
2003/7/17 17:12:57
24楼:
[size=5]谢谢你的耐心指导!我做的软件将先给你用,再次感谢朋友们![/size]
----------------------------------------------
http://zhd21.533.net/
作者:
2003/7/22 8:55:07
25楼:
虚拟一个字段就行了啊,为什么这么复杂呢!
----------------------------------------------
-
作者:
2003/7/22 9:08:58
26楼:
要保存在数据库里!
----------------------------------------------
-
作者:
2003/7/22 11:48:53
27楼:
还有一个问题:如果我想“单价”ד数量”等于“总价”,比如我要补差价,数量是没有的(不是等于“0”),那不是“总价”还有吗,那该如何处理?能不能改为默认,也就是在没有“单价”、“数量”的情况下,我可以输入“总价”。那位大侠说说?
----------------------------------------------
-
作者:
2003/7/22 11:51:30
28楼:
单价,数量都不为空,才计算,当然可以直接输入,
----------------------------------------------
-