PB 数据库访问错误捕获问题,部分错误在dw的 dberror 没能够捕获到,如何实现定制错误呢

sonata_001 2010-04-22 08:56:00
比如:(1)用户无权限时,PB弹出错误消息(提示用户没有权限,不能执行 update 操作,文本太长,省略);
(2)dw没有更改允许时,PB弹出类似“have no update capability”;
以上消息,在dw dberror 中没有捕获到,这样就无法定制错误告警消息了。


...全文
281 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wag_enu 2010-04-23
  • 打赏
  • 举报
回复
不知道LZ是用的什么DBMS ,我只知道打开SQL Server 2000 的master 的sysmessages 表,里面有好几千种出错信息呢...
wag_enu 2010-04-23
  • 打赏
  • 举报
回复
试一下:
做一个DW 控件的Standard Visual
1,在其Instance Variables 里定义变量 string is_dberror
2,在其Dberror 事件里写代码

choose case sqldbcode
case -1
is_dberror='XXXX错误'
case -2
is_dberror='YYYY错误'

..........

case else
is_dberror = sqlerrtext
end choose
return 1


3,引用此自定义的DW 并写代码
if dw_1.update() <> 1 then
messagebox('',dw_1.is_dberror)
return
end if

sonata_001 2010-04-23
  • 打赏
  • 举报
回复
“就是想地址出错信息(避免其中的英文提示)。”---纠正:

“就是想定制出错信息(避免其中的英文提示)。”
sonata_001 2010-04-23
  • 打赏
  • 举报
回复
没有权限是指登陆的sql账号没有相应的数据操作(如 insert, update 操作权限)。

另外,上面的在 dw 的error 事件中也不能捕获------这点我昨天忘记写了。

之所以要求这些,就是想地址出错信息(避免其中的英文提示)。
wag_enu 2010-04-23
  • 打赏
  • 举报
回复
那这个高深,再帮顶一下...
sonata_001 2010-04-23
  • 打赏
  • 举报
回复
SQLSTATE = 42000
Microsoft SQL Native Client
拒绝了对对象 'T_Patient' (数据库 'XXXX',架构 'dbo')的 UPDATE 权限。

这个消息竟然也在 dberror 中拦截不到,奇怪。这个肯定是DBMS相关的出错信息,照道理,应该是在 dberror事件中的呀
sonata_001 2010-04-23
  • 打赏
  • 举报
回复
我的是 sql server 2005
王震宇,你误解了我的意思。目前的问题是这样的错误消息在 dberror事件中拦截不到--------当你在脚本的首行代码中设置断点,根本到不了。

kenshu 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xys_777 的回复:]
(1)用户无权限是什么意思?
(2)这个应该不是dberror中捕获的,要用error
[/Quote]
1.一些时候,是数据库的TRIGGER.我之前有同事,在update的trigger写着"您当前的程序已过期,请与小X(我另一个同事),手机139XXXXXXXX联系",直接把小X的程序关掉.经常有没更新程序的另外的同事不定时打他手机.

2.谨受教.
永生天地 2010-04-22
  • 打赏
  • 举报
回复
(1)用户无权限是什么意思?
(2)这个应该不是dberror中捕获的,要用error

611

社区成员

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

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