怎样处理ADO中的错误,不显示系统默认的错误信息?(100分)

  • 主题发起人 主题发起人 dqiuqiu
  • 开始时间 开始时间
D

dqiuqiu

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的AdoTable,表中有一个主键,在输入记录时如果主键字段不输入(或者重复)
在updatebatch时,会出现ADO本身的错误信息,怎么也不能屏蔽它!
用了如下的办法:
try
AdoTable1.UpdateBatch;
except
showmessage('error');
end;
结果也是先显示Ado的错误信息后才执行 showmessage!
如何解决上述问题呢?
并且在AdoTable1 的OnPostError事件中也无法解决,并且根本没触发到此事件?
是否我的系统有BUG呢???
请大家帮忙看看或试一下。
 
在ADOTable的posterror事件中加上
showmessage('error');
abort;//屏蔽系统异常
 
迈克老狼:
我试过了,还是不行。
 
李维同志的书是不是说要分别处理ado自己的错误处理和delphi的错误处理还不大一样的呢
而且李维同志说怎么delphi的ado对象源码还有个bug,自己找李维那本ado的书来修改一下吧。
//处理ado自己的错误
procedure TServiceForm.ADOQueryAttachedFilesPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
var
AdoErrors: Errors;
AdoError: Error;
iCount: Integer;
begin
AdoErrors := ADOServer.Errors;
Memo.Lines.Add(StringOfChar('*', 80));
for iCount := 0 to AdoErrors.Count - 1 do
begin
AdoError := AdoErrors.Item[icount];
Memo.Lines.Add('Error Number: ' + IntToStr(AdoError.Number));
Memo.Lines.Add('Error Source: ' + AdoError.Source);
Memo.Lines.Add('Error Description: ' + AdoError.Description);
Memo.Lines.Add('Error HelpFile: ' + AdoError.HelpFile);
Memo.Lines.Add('Error SqlState: ' + AdoError.SQLState);
Memo.Lines.Add('Error NativeError: ' + IntToStr(AdoError.NativeError));
end;
Memo.Lines.Add(StringOfChar('*', 80));
end;

//处理delphi自己的错误
try
except
on e:exception do
begin
end;
end;
 
api捕捉系统消息然后用你的替代他啊
 
就是,不要ado的话,就可以不用处理ado错误消息了嘛
 
我的建议是在输入记录的时候检测是否为空,或者是否重复,
这样这个问题也就不存在了。
而且,这样对用户也是友好的,否则是不是用户也是一头雾水呢?
 
问题已解决。谢谢大家
 
后退
顶部