在线等 怎样获取存储过程或触发器的错误报告消息

hksl 2005-08-07 07:01:35
请教各位
在delphi中 怎样获取存储过程或触发器的错误报告消息
比如存储过程是这样的

select * from sedo where billno in ('D0300037A','D0300037B')
if @@rowcount>0
begin
RAISERROR('对不起,不能相同记录!',18,18)
RETURN
end
GO

在前台怎样获取 这个‘对不起,不能相同记录!’消息呢

谢谢
...全文
141 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdhans 2005-08-08
  • 打赏
  • 举报
回复
编译好后用新的 ADODB.PAS和ADODB.DCU 替换原来的文件
wdhans 2005-08-08
  • 打赏
  • 举报
回复
用TRY的话,有的触发器错误不会报错。

修改DELPHI 带的ADODB.pas 然后编译(最好先备份):
修改这个函数:
function TADOCommand.Execute(var RecordsAffected: Integer;
const Parameters: OleVariant): _Recordset;
var
VarRecsAffected: OleVariant;
begin
SetConnectionFlag(cfExecute, True);
try
Initialize;
Result := CommandObject.Execute(VarRecsAffected, Parameters,
Integer(CommandObject.CommandType) + ExecuteOptionsToOrd(FExecuteOptions));
RecordsAffected := VarRecsAffected;
//added by wbh 添加了下面两行
if Connection.Errors.Count>0 then
DatabaseErrorFmt('%s',[Connection.Errors.item[0].Description]);
finally
SetConnectionFlag(cfExecute, False);
end;
end;

hanlin2004 2005-08-08
  • 打赏
  • 举报
回复
'对不起,不能相同记录!'

我是感觉这句提示很不友好,语法也不通顺

呵呵

一楼的可以
hqhhh 2005-08-08
  • 打赏
  • 举报
回复
如果不行,不稳定,就在程序中判断了,还比较安全!
hksl 2005-08-08
  • 打赏
  • 举报
回复
我开始就是用了这个
但是有的提取不出来
LWH008 2005-08-07
  • 打赏
  • 举报
回复
楼上就是正宗的做法
sxf_zero 2005-08-07
  • 打赏
  • 举报
回复
try
ADOQuery1.Open;
//or ADOQuery1.ExecSQL;
except
on e:Exception do
begin
ShowMessage(e.Message);
end;
end;

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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