有关删除记录的问题(50)

  • 主题发起人 主题发起人 hanxin
  • 开始时间 开始时间
H

hanxin

Unregistered / Unconfirmed
GUEST, unregistred user!
我有两个表,一个产品信息表,一个订单明细表,我想实现的功能是:当订单明细表中存在该产品编码时,该产品不能被删除。现在出现的问题是:在产品信息维护界面上新增一条记录时,按删除按钮不能实现删除,但是如果重新运行一下,就能实现删除了,这是怎么回事?请各位帮我看一下。代码如下:procedure TCPXXWHFm.DelBtnClick(Sender: TObject);begin inherited; if application.MessageBox('是否删除此记录?','确认',mb_iconinformation+mb_yesno)=idyes then begin with dmXSGL.ADOQCommon do begin close; sql.Clear ; sql.Add('select * from ddmx where cpbm=:cpbm '); parameters.ParamByName('cpbm').Value :=dmXSGL.ADOTcpxx.fieldbyname('cpbm').AsString ; open; if not eof then begin application.MessageBox('产品信息已被使用,不能删除!','提示',0); exit; end else begin if dmXSGL.ADOTcpxx.RecordCount <>0 then begin dmXSGL.ADOTcpxx.delete ; end else begin Application.MessageBox ('已经删除完毕,不能继续删除','提示',0); exit; end; end; end; end;end;
 
按删除按钮不能实现删除,提示'已经删除完毕,不能继续删除'?-------------------------看不出问题来,把if dmXSGL.ADOTcpxx.RecordCount <>0 then 修改为if dmXSGL.ADOTcpxx.fields[0].asstring <>'' then 看看
 
to znxia:还是不行呀,再帮我看看!就是新加的记录不能删除,但是重新运行一下,就能删除了
 
可我不知道它提示什么。其实你可以加一个断点,跟踪测试一下。
 
提示的是产品信息已被使用,不能删除!我会按照你说的方法试试,你在帮俺看看
 
with dmXSGL.ADOQCommon do begin close; sql.Clear ; sql.Add('select Count(*) a from ddmx where cpbm='''+dmXSGL.ADOTcpxx.fieldbyname('cpbm').AsString +'''' ); open; if Fields[0].asinteger>0 then begin application.MessageBox('产品信息已被使用,不能删除!','提示',0); exit; end else ..............
 
还不行呀,还是那个提示,哎呀,真难呀!
 
在执行删除前试着把表关闭了,再重新打开看看
 
parameters.ParamByName('cpbm').Value :=dmXSGL.ADOTcpxx.fieldbyname('cpbm').AsString ;你新增的记录在dmXSGL.ADOTcpxx中更新了吗,怀疑是你的数据没更新,传进去的值是上一次最后记录,不是当前新记录。跟踪一下SQL语句不就清楚了嘛。
 
with dmXSGL.ADOQCommon do begin close; sql.Clear ; sql.Add('select Count(*) a from ddmx where cpbm='''+dmXSGL.ADOTcpxx.fieldbyname('cpbm').AsString +'''' ); showMessage( sql.text ); //新增加的 open; if Fields[0].asinteger>0 then begin application.MessageBox('产品信息已被使用,不能删除!','提示',0); exit; end else ..............
 
1、你的问题是:删除后需要重新更新表,可能已经删除了。2、更改你的数据库,加上关联不就可以了。这个都不需要在程序加判断。反正服务器的运算量是很大的。
 
谢谢大家:问题解决了,是因为adotable和adoquery混用造成的,新增记录刷新用的是adotquery刷新的,后来改为用adotable刷新就解决啦,哈哈......
 
后退
顶部