如何捕捉这个错误?

[大楚] 2002-05-21 06:40:55
执行DataSoure1.DataSet.append时,出现如下错误:
Project aaaaa.exe raised exception class EoleException with message
"由于在关键字创建重复值,对表的请求没有成功....."等
好象是关键字重复,但使用下面的语句,却无法捕捉错误
try
...
except
on e:exception do
if pos('key violation',e.message)<>0 then dosomething;
end;
...全文
27 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
墨梅无痕 2002-05-22
  • 打赏
  • 举报
回复
如果要提取ADO的错误,需要使用ADOConnection对象来提取。
(请在Unit的inteface的uses子句中引用ADOInt单元)
var
adoErrors: ADOInt.Errors;
adoError: ADOInt.Error;
i: Integer;
begin
adoErrors := ADOConnection1.Errors;
for i := 0 to adoErrors.Count - 1 do
begin
adoError := adoErrors.Item[i];
ShowMessage(adoError.Description);
end;//for
end;

当然,这捕捉的是ADO Provider的错误和异常,对于ADO自身的错误,因为ADO被封装在了ADOExpress中,所以可以采用和BDE类似的方法来捕获错误。
GreenWaterBlueSky 2002-05-22
  • 打赏
  • 举报
回复
可以,你试一下不就知道了吗?
[大楚] 2002-05-21
  • 打赏
  • 举报
回复
我ShowMessage(e.message)可以有结果吗?
lxpbuaa 2002-05-21
  • 打赏
  • 举报
回复
try
DataSoure1.DataSet.Post;
except
on e:exception do
if pos('key violation',e.message)<>0 then dosomething;0D //如果关键字重复会执行到上面一句,但是错误信息不一定是'key violation',可能写法不同。最好用错误类型判断
end;


—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”等字样,删除它们';
I.Desire := '加不加分随你';
—————————————————————————————————


       
[大楚] 2002-05-21
  • 打赏
  • 举报
回复
是ACCESS数据库

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧