关于SQL返回值的判断(30分)

  • 主题发起人 主题发起人 boclif
  • 开始时间 开始时间
B

boclif

Unregistered / Unconfirmed
GUEST, unregistred user!
如何捕捉一条SQL语句的返回值,例如打开数据库错,键值重复,数据集已经改变等信息写相
应的处理代码或提示信息,在C语言嵌入式的SQL中我可以用SQLCODE的值来判断,不知在
DELPHI中应该如何做?
 
用Query或Table的话可以在OnUpdateError事件中处理:
procedure TFormDatabaseSource.QuerySystemUpdateError(DataSet: TDataSet;
E: EDatabaseError; UpdateKind: TUpdateKind;
var UpdateAction: TUpdateAction);
begin
if (E is EDBEngineError) then
begin
Application.MessageBox(PCHAR('保存时出错!请检查是否有如下错误:'+#13#10#13#10
+' 1、编号重复,例如商品编号!如果数据没有编号,名称是否重复!'+#13#10
+' 2、是否某些字段为空!例如:编号或名称字段!'+#13#10
+' 3、是否修改了已在使用中的资料的编号字段或删除一个已在使用中的资料!'+#13#10
+' 4、如果没有上述错误:请记录错误并与当地**公司办事处联系!'+#13#10#13#10
+Err_No+IntToStr((E As EDBEngineError).Errors[0].ErrorCode)+#13#10
+E_Mess+E.Message),'错误提示:',MB_OK_Error);
end else
Application.MessageBox(PChar(Other_Mess+Enter1+Enter2+E_Mess+Enter1+E.Message+Enter2+Da_Set+DataSet.Name+Enter1+DaSet_Ow+(DataSet.Owner as TForm).Caption),PChar(FormTitil),ButtonState);
UpdateAction:=uaAbort;
end;
 
如果用adotabe的话,好像没有OnUpdateError事件事件,再说楼主好像要出现相应的提示
信息。关注。
 
........
try
ADOComm.Execute;
ADOComm.Free;
Form1.ADOConn.CommitTrans;
if Application.MessageBox('填写操作完成,是否清除输入内容填写新传票?', '操作完成', mb_YesNo + Mb_IconQuestion) = 6 then
begin
ClearFm_Edit;
end;
except
on E: Exception do
begin
ADOComm.Free;
Form1.ADOConn.RollbackTrans;
Application.MessageBox(PChar('数据操作时发生错误!' + #13 + #13 + '返回的错误信息如下:' + #13 + #13 + E.Message), '错误', Mb_Ok + Mb_IconInformation);
end;
end;
........
 
用ADOConnection.Errors.item[0].nativeError可以捕捉代码,谢谢各位!!!
 

Similar threads

回复
0
查看
978
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部