关于delphi update的问题 程序报错,急求助!
withDataModule5.ADOQuery6dobeginclose;sql.Clear;sql.Add('update固定车辆付款纪录表,进出状态表set固定车辆...
with DataModule5.ADOQuery6 do
begin
close;
sql.Clear;
sql.Add('update 固定车辆付款纪录表,进出状态表 set 固定车辆付款纪录表.收费金额=:c where 固定车辆付款纪录表.收费单编号=进出状态表.进出状态编码 ');
Parameters.parambyname('c').value:=strtofloat(label15.Caption);
execsql;
showMessage('收费成功!'); //报错在这里 First chance exception at $76A4C41F. Exception class EOleException with message '',' 附近有语法错误。'. Process Project1.exe (15536)
end;
DataModule5.ADOQuery6 string 设置不知道有没有问题 :
select * from 固定车辆付款纪录表,进出状态表 展开
begin
close;
sql.Clear;
sql.Add('update 固定车辆付款纪录表,进出状态表 set 固定车辆付款纪录表.收费金额=:c where 固定车辆付款纪录表.收费单编号=进出状态表.进出状态编码 ');
Parameters.parambyname('c').value:=strtofloat(label15.Caption);
execsql;
showMessage('收费成功!'); //报错在这里 First chance exception at $76A4C41F. Exception class EOleException with message '',' 附近有语法错误。'. Process Project1.exe (15536)
end;
DataModule5.ADOQuery6 string 设置不知道有没有问题 :
select * from 固定车辆付款纪录表,进出状态表 展开
展开全部
你更新的是固定车辆付款记录表,更新的同时需要固定车辆付款记录表中的收费单编号能=进出状态表中的进出状态编号是吧?
貌似应该是这样
update 固定车辆付款记录表set 收费金额=:c from 固定车辆付款记录表,进出状态表 where 固定车辆付款记录表.收费单编号=进出状态表.进出状态编码
顺便说一下,一般在数据库中都是用的英文的,你这样用中文的是在太难看了,我看这眼睛都是花的,也不知道哪里看错了没有。。。,建议你以后用英文,又方便又简单
貌似应该是这样
update 固定车辆付款记录表set 收费金额=:c from 固定车辆付款记录表,进出状态表 where 固定车辆付款记录表.收费单编号=进出状态表.进出状态编码
顺便说一下,一般在数据库中都是用的英文的,你这样用中文的是在太难看了,我看这眼睛都是花的,也不知道哪里看错了没有。。。,建议你以后用英文,又方便又简单
追问
我按照你说的,可以收费了。
但是,sqlserver里所有 同个卡号的 收费金额都会被改动(例如卡号是1 因为停了好几次车,所以有n个记录 再次收费的时候 表中所有卡号为1的记录中的 收费金额 都会被修改)
有没有什么解决方法?只修改1个记录?
追答
你的数据库估计要改一下。。。。最好你能吧你的表结构放上来看看
收费单编号这样的字段我的理解应该是个主键字段,不应该出现多条相同的数据,你这个字段的数据不知道数据来源是发票编号还是收据编号或者自己手动输入编号或者程序自动生成编号,不应该会出现多条相同的,比如某个车子每次停车消费以后给他的收费单的编号应该是不同的,而相同的应该是这台车的车牌号码,而不是收费单编号
另外子查询的条件其实我很奇怪,收费单编号怎么会和进出状态编码有联系?进出状态编码应该是个车辆进出状态的标志,用0和1表示就可以了,0为出1为进来表示就可以了
最好吧你的数据库结构放出来,你的数据库设计需要修改
你这个实现收费功能为什么会用update而不是insert into?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询