关于sql的问题(50分)

  • 主题发起人 主题发起人 Serena
  • 开始时间 开始时间
S

Serena

Unregistered / Unconfirmed
GUEST, unregistred user!
设置adoquery1执行下面的语句
select 单价,数量,单价*数量 as 金额
然后我在字段单价的onchange事件中写了
adoquery1.fieldbyname('金额').asfloat:=adoquery1.fieldbyname('单价').asfloat*
adoquery1.fieldbyname('数量').asfloat

结果出错:多步操作产生错误,请检查每一步的状态值。

这是什么问题,数据库中没有金额这个字段,这是显示在dbgrid中的。
如果我不想在数据库中添加金额这个字段,有什么办法可以解决?
 
用计算字段处理。
 
概念混乱。
onchange事件中写的一切根本不需要。
你在SQL语句中已经做好了。

 
设置adoquery1执行下面的语句
select 单价,数量,单价*数量 as 金额 //这里有一次
然后我在字段单价的onchange事件中写了
adoquery1.fieldbyname('金额').asfloat:=adoquery1.fieldbyname('单价').asfloat*
adoquery1.fieldbyname('数量').asfloat //还要来一次,不要了罢
?????????????????????
来晚一步,看楼上的
 
不要在里面用汉字,最好用英文.另外,这个字段是否是数值型.而且当前adoquery是不是在修改状态.
 
看样子我没说清楚,我是用sql取回数据,在dbgrid中显示编辑,这时候
在dbgrid中修改单价或者是数量,那么在dbgrid中显示的金额也应该跟着发生变化
才对,所以我要在onchange事件中写。
 
faint.
不行,要么你就把onchange中的东西cut掉
要么就把 select 单价,数量,单价*数量 as 金额
后面那 单价*数量 as 金额 cut掉 鱼和熊掌不可兼
 
sundart 的没错
在dataset(table query)做一个金额的计算字段
再把onchange的东西贴到oncalcfields里去
当然要向sonie说的“把 select 单价,数量,单价*数量 as 金额
后面那 单价*数量 as 金额 cut掉”
 
老兄,用计算字段吧,

 select 单价,数量

然在OnCalcFields事件中写:
adoquery1.fieldbyname('金额').asfloat:=adoquery1.fieldbyname('单价').asfloat*
adoquery1.fieldbyname('数量').asfloat

onchange事件中的全删掉
 
多人接受答案了。
 
后退
顶部