Delphi开发SQL Server 2000的一个小问题...(50分)

  • 主题发起人 主题发起人 罗子
  • 开始时间 开始时间

罗子

Unregistered / Unconfirmed
GUEST, unregistred user!
在SQL Server 表中有如下触发器:
CREATE TRIGGER jhd_delete ON 进货单 FOR DELETE AS
IF EXISTS(SELECT * FROM DELETED WHERE 流水号 LIKE '01')
BEGIN
RAISERROR('不能删除流水号为01的记录!',10,1)
ROLLBACK TRANSACTION
END
GO
问题:
在Delphi中使用ADOtable1组件的 DELETE 方法来删除记录时,如果删除到了流水号为 01 的记录.
请问如何才能把SQL Server触发器中的 RAISERROR 语句的内容在Delphi 中提示用户?
 
建议不要使用出发器,以后要升级数据库都麻烦!
 
to hukaijt:
现在我的项目已经准备完成了.(就差界面了)
如果从头做(全部使用Delphi 写)是很难的,我也不愿意这样!
这样如何使用Delphi来显示出SQL Server 上的提示信息是必不可少的.而且应该可以做到的吧?
只是我刚从VB过来的,在不太了解Delphi的情况下只能请各位多多指教.帮小弟过难关了!!
 
各位请快来帮帮忙呀!!
 
应用程序无法与触发器通信,建议你将此处的SQL语句在DELPHI程序中实现.
 
try
ADOCommand1.Execute;
except
on E:Exception do
begin
Application.MessageBox(PChar('操作遇到错误被终止,系统返回的错误信息如下:'+#13+#13+E.Message) ,'操作失败',Mb_OK+Mb_IconInformation);
end;
end;
不知道这样行不行?
 
TO 少爷的拐杖:
谢谢.我试试以后马上回来!
 
TO 少爷的拐杖:
使用你说的的方法并没有显示 SQL Server 上使用 RAISERROR 定义的提示.
TO only you:
如果说应用程序不能与触发器通信,那么在其它地方(如:存储过程)是否可以呢?
也就是说能否把存储过程上的 RAISERROR 的肉容发送到 Delphi 中吗?
 
不加try可以直接显示出存储过程中的提是信息, 如果想要处理这个异常的话,实施重新触发一次.
 
to shangshang:
"不加 try "的意思是不是不做任何的异常入理?
 
请各位说说你的意见呀!.
你们开发c/s型数据库时是如何做的?
难到全部的计算代码都放在客户机去执行吗?
如果不是:如何把服务器端的提示信息显示出 来?
 
没理由的!我一直用的方法同少爷的拐杖一样,可以的。
 
用存储过程吧,包你行。
 
to 少爷的拐杖:
to emonster:
你们在 SQL Server 中的 RAISERROR('xxxx',10,1)
错级别是 10 吗?
还有 RAISERROR() 的最后一个参数是如何设置的?
我这里真的不行呀!
你们能不能给我你们的 RAISERROR()函数例子给我?先谢谢了!!!
 
请各位帮帮!!!
 
RAISERROR('不能删除流水号为01的记录!',[red]16[/red],1)
然后在ADOTable的OnDeleteError事件捕获异常就可以了
 
后退
顶部