try...except不能捕捉applyupdate错误?(100分)

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

skywalker2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我创建了一个 Transcation data module project,data module上放了
adoconnection,adotable,datasetprovider几个控件,然后
为这个对象设置了更新方法applydatachange
更新的代码如下:
procedure applydatachange(vdata:olevariant)
begin
try
datasetprovider1.applyupdates(vdata,0,icount);
setcomplete;
except
setabort;
end;
end;
我将断点设置在datasetprovider1.applyupdates(vdata,0,icount)上,然后在更新表时,
插入主键已经存在的记录,这样就报出记录不唯一的错误对话框,我确认关掉对话框,然后在
setcomplete和setabort上都设置了断点,发现程序没有跳到EXCEPT执行,而是继续执行了
setcomplete,这是什么原因啊?请大家帮忙,谢谢!
 
你直接運行exe試試看
 
确实没有执行setabort
 
procedure TForm1.ClientDataSet1ReconcileError(
DataSet: TCustomClientDataSet;
E: EReconcileError;
UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin

end;
该事件中写错误处理,呵呵,应该可以
 
同意Zhousi
李维的<<分布式多层应用系统篇>>就是这样说的
 
to zhousi :
说的没错,我还可以通过查看icount的值是不是0来确定是否有错误返回,这些方法都是
可行的。但是我看到别人相似的程序片段里都没有为捕捉错误写附加代码,所以比较疑惑,
怀疑是不是自己哪里的设置有问题,希望能澄清一下这个问题,到底为什么不能捕捉,呵呵
 
to skywalker2000
具体我也不知道为什么try。。except不行
但根据李维老大哥的说法,还是要自己写捕捉的程序
现在我门写工程的全需要写上,不写上,就被老板p,
我也是菜鸟
 
那就用applicationEvents来捕捉吧
 
To skywalker2000,
你直接执行编译出来的Exe看看~~
我担心你犯了这个常识性的错误......
 
以上代码是COM服务器的一个方法,编译后生成.dll文件,然后注册到组件服务中,
没有EXE文件,我客户端的EXE程序只是调用这个方法而已
 
多人接受答案了。
 
后退
顶部