pb dw.update()时出现主键重复时如何屏蔽datawindow error对话框及截获出错信息

一行简单的代码

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对话框。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章