一行简单的代码
if dw_2.update() = -1 then
//ls_err= SQLCA.SQLErrText
rollback using sqlca;
if sqldb = 2627 then
messagebox("","主键重复,保存失败!" + sqlerr)
else
messagebox("", "保存失败,错误码:"+ string(sqldb) )
end if
return
else
commit using sqlca;
messagebox("", "保存成功!")
return
end if
前台界面如下:
当前台输入了两条卡号(主键)相同的信息并保存时, 会出现主键重复的错误。如图:
但是这个datawindows error非常讨厌,会令用户非常迷茫,想去掉这个系统默认的提示窗口,方法如下:
在dw_2的dberror的事件中添加return 1语句,并接收sqldbcode来截获数据库出错代码,如图:
奇怪的是这里面不能用sqlerrtext来接收数据库出错信息,因为只要加上这行代码就会出现如下对话框。
因此只能用sqldbcode来判断出错原因。当主键重复时出错代码是:2627,因此上面代码执行后得到想要的结果如图:
注意:在dberror事件下写代码return 1后只有正常运行时能够实现预期效果。如果进行调试debug的话,这行代码是不生效的,依然会出现datawindow error对话框。