外健,主健错误的捕捉(50分)

  • 主题发起人 jameschin
  • 开始时间
J

jameschin

Unregistered / Unconfirmed
GUEST, unregistred user!
外健值不存在和主健冲突的错误
如何捕捉,单独处理
另外,唯一索引冲突,如何捕捉
 
没有人回吗?
 
Try
Except
On E.Except Do
Begin
..
ShowMessage(E.Message);
End;
End;
 
两种方法:
1.再数据库后台写,存储过程或触发器,将错误值(或参数)返回.
2.在前端用try...except showmessage()方法.
 
我想用try..except的方法,但是有没有类似errorcode的属性,能区分各种错误,
然后我在显示相应的对话框。bde有这样的方法,但ado怎么解决呢

在数据库后段怎么写代码,请高手指点
 
没人能解决吗
高手们,分不够可以在加,
 
try
ADODataSet1.Append ;
ADODataSet1.FieldByName('C1').Value :='C11' ;
ADODataSet1.FieldByName('C2').Value :='Csd1' ;
ADODataSet1.Post ; // 随便叉了一个重复主键的记录

except
showmessage(ADODataSet1.Connection.Errors.Item[0].Description) ;
showmessage(ADODataSet1.Connection.Errors.Item[0].SQLState) ;
// 提示了 , 你看看, 能不能直接用上.
end ;
 
jameschin :
我查了一下,ADO 这里提示的错误格式是按照 SQL 描述

包含 SQL Server 消息描述,一般来自 master.dbo.sysmessages 中的 description 列。
SQLState
包含由用于 SQL Server 的 Microsoft OLE DB 提供程序生成的五字符 SQLSTATE 代码。
其中那个 Error 值 我在 SQL 事件探察器中能得到, 现在的问题就是 在StoreProcedure 里做
Insert into 一个错误的记录 后,返回一个 Exception 给调用的 Out 参数,好像@@error 能够.
我还没有找到控制 @Error 的方法.
写出来一起找吧. 控制好了 ,你的问题就解决了 .(我推测的.)
 
找遍整个世界,翻遍了SQL 的帮组, 就是没有 store procedure 里控制这个Exception
的.

jameschin , 看来你的问题搞不定了...

 
多谢Puma Wang兄
我记得
adoConnection.errors
存着错误。 Error.ErrorNumber,Error.NativeError(记得不太清)可以一个代吗对应唯一错误
但是没有找到各个代码的含义
 
是这样的,
本来我在 SQL 查询分析器中 做那个错的 Insert ... 在调试器里能得到那个 Error 号的,
确实能看到错误的实际内容和号码.
但是它返回给Delphi 的只是 23000 这个笼统的号.
更气人的是 在Store Procedure 里 遇到这个Insert 的错误,下面的行就都不做了,直接返回.
没有办法控制这个Exception ... 不象 Oracle ...

所以 以上就是 我昨天做的尝试 ,我没有办法了. 各位有什么高招吗?
 
多人接受答案了。
 
顶部