DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: sy1012
今日帖子: 0
在线用户: 5
导航: 论坛 -> 未知:1 斑竹:  
作者:
女 疯子 ▲△△△△ -
2003/7/14 12:16:18
标题:
在DBgrid中如何对字段进行运算? 浏览:4777
加入我的收藏
楼主: 在DBgrid中如何对字段进行运算?
如,有字段名为“数量,单价,总价”那么如何在DBgrid中输入数据后直接将结果运算出:
总价=数量*单价
----------------------------------------------
作者:
男 YueJun_98 (YueJun_98) ★☆☆☆☆ -
盒子活跃会员
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/
作者:
男 YueJun_98 (YueJun_98) ★☆☆☆☆ -
盒子活跃会员
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/
作者:
男 YueJun_98 (YueJun_98) ★☆☆☆☆ -
盒子活跃会员
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/
作者:
男 YueJun_98 (YueJun_98) ★☆☆☆☆ -
盒子活跃会员
2003/7/17 8:56:55
11楼: 用ADO控件,设置属性.同上.
----------------------------------------------
-
作者:
女 haikely (阿) ★☆☆☆☆ -
盒子活跃会员
2003/7/17 9:51:44
13楼: 对啊!在你的数据集上加一个计算机字段不就解决了吗!
----------------------------------------------
-
作者:
女 dgt (dgt) ★☆☆☆☆ -
普通会员
2003/7/17 12:54:05
14楼: 有'总价'字段啊.
按9楼朋友说的做了啊,
运行,输入单价和数量的值后,'总价'栏不显示数,
我太菜了,没有学会,真不好意思!
----------------------------------------------

竹因虚受益
松以静延年
 http://zhd21.533.net/
作者:
男 YueJun_98 (YueJun_98) ★☆☆☆☆ -
盒子活跃会员
2003/7/17 13:05:59
15楼: 属性设置了没有?
代码是在数据集BeforePost事件下(只真对ADO控件)
数据库里要有'总价'字段
----------------------------------------------
-
作者:
女 dgt (dgt) ★☆☆☆☆ -
普通会员
2003/7/17 13:45:44
16楼: 数据库里有'总价'字段,设置等都按9楼样式做了
----------------------------------------------

竹因虚受益
松以静延年
 http://zhd21.533.net/
作者:
男 YueJun_98 (YueJun_98) ★☆☆☆☆ -
盒子活跃会员
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/
作者:
男 YueJun_98 (YueJun_98) ★☆☆☆☆ -
盒子活跃会员
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/
作者:
男 YueJun_98 (YueJun_98) ★☆☆☆☆ -
盒子活跃会员
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/
作者:
男 30896186 (缘来一家人) ★☆☆☆☆ -
盒子活跃会员
2003/7/22 8:55:07
25楼: 虚拟一个字段就行了啊,为什么这么复杂呢!
----------------------------------------------
-
作者:
男 YueJun_98 (YueJun_98) ★☆☆☆☆ -
盒子活跃会员
2003/7/22 9:08:58
26楼: 要保存在数据库里!
----------------------------------------------
-
作者:
男 fbw828 (fbw828) ★☆☆☆☆ -
普通会员
2003/7/22 11:48:53
27楼: 还有一个问题:如果我想“单价”ד数量”等于“总价”,比如我要补差价,数量是没有的(不是等于“0”),那不是“总价”还有吗,那该如何处理?能不能改为默认,也就是在没有“单价”、“数量”的情况下,我可以输入“总价”。那位大侠说说?
----------------------------------------------
-
作者:
男 YueJun_98 (YueJun_98) ★☆☆☆☆ -
盒子活跃会员
2003/7/22 11:51:30
28楼: 单价,数量都不为空,才计算,当然可以直接输入,
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行80.07813毫秒 RSS