vmao,刚作了个试验,我在作删除外键引用了的主键时,捕获AdoConnection1.Errors.Count
竟然为0.不知是哪儿有问题.不过,这段代码我是写于DataModul的一个过程中,然后在出错
时事务Rollback后调用这个过程.我的事务不是在DataModul中,而是在执行代码当中启用.
代码大致如下:
TAdoQuery(grdDataList.DataSource.DataSet).Connection.begin
Trans;
try
grdDataList.DataSource.DataSet.Delete;
TADOQuery(grdDataList.DataSource.DataSet).UpdateBatch();
TAdoQuery(grdDataList.DataSource.DataSet).Connection.CommitTrans;
except
TADOQuery(grdDataList.DataSource.DataSet).CancelBatch();
TAdoQuery(grdDataList.DataSource.DataSet).Connection.RollbackTrans;
DmData.CaptureDatabaseErrorMsg;
end;
////以上为"删除"按钮Click中的代码,代码倒数第二行中的DmData.CaptureDatabaseErrorMsg;
就是一个捕获错误的过程,代码如下:
procedure TDmData.CaptureDatabaseErrorMsg();
var
i:integer;
begin
showmessage('Errors Count:'+inttostr(AdoConnection1.Errors.Count));
for i:=0 to AdoConnection1.Errors.Count-1do
begin
showmessage(inttostr(AdoConnection1.Errors.Item
.NativeError));
showmessage(inttostr(AdoConnection1.Errors.Item.Number));
showmessage(AdoConnection1.Errors.Item.Source);
showmessage(AdoConnection1.Errors.Item.SQLState);
end;
end;
**** 以下我跟踪得到 AdoConnection1.Errors.Count为0,但明明是有个错误嘛.
**** 另做了一个主键重复的测试,跟踪后得到NativeError=0,ADO连接SQL SERVER中主键重
复的错误号是不是0呀????
兄弟哥们快来讨论讨论吧 [][][^][^]