delphi adoquery的field事件

数据库有有一个表表:商品编码数量我用adoquery连接,并且在数量field的onchange事件中写代码vars:string;sum:integer;begins:... 数据库有有一个表
表:商品编码 数量
我用adoquery连接,并且在数量field的onchange事件中写代码
var
s:string;
sum:integer;
begin
s:=trim(adoquery1.Fieldbyname('商品编码').Value);
sum:=0;
adoquery1.First;
while not adoquery1.Eof do
begin
sum:=sum+strtoint(trim(adoquery1.Fieldbyname('数量').Value));
adoquery1.Next;
end;
adoquery1.Locate('商品编码',s,[]);
edit1.Text:=inttostr(sum);
但运行时,我改变某一行的数量列的值时,出现这样的错误

为什么会出现这样的错误?又应该怎么解决呢?
展开
 我来答
匿名用户
2013-05-09
展开全部
你的编码有点问题。。。主要的问题是 adoquery1.Locate('商品编码',s,[]);
adoquery.locate() 他是一个布尔函数。。你这么写着是啥意思?他是做判断的吧还有这句sum:=sum+strtoint(trim(adoquery1.Fieldbyname('数量').Value));
想不通。。。为什么不直接sum:=sum+adoquery1.FIeldByName('数量').value; ?你的图片太小了。。我看不到是什么错误 还有就是field的onchange事件我好像没用过。。你想运行什么样的效果。或许我可以给你想个
匿名用户
2013-05-09
展开全部
双击DBGrid的关联数据集控件比如ADOQuery ,然后右击点来增加新的计算字段。记得把FieldType 设置为Calculated 。然后在ADOQuery的OnCalcFields事件里写代码:ADOQuery.FieldByName('HJ').AsFloat:= ADOQuery.FieldByName('dj').AsFloat * ADOQuery.FieldByName('sj').AsInteger 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式