hur.cn - 华软网

 热门搜索

错误转换问题!

  作者:未知    来源:网络    更新时间:2018/7/4
当用户操作不当会引起数据库的报错
比如数据录入的数据窗口中当用户添加一行后没有把该行填写完整(有的关键字也没有填写)就保存
系统会提示“××××can not be NUll ……”之类的错误
怎么把这类系统错误提示转化为我们自己的错误提示呢?
------华软网友回答------
哦,忘了说了
我说的是asa8.0数据库
------华软网友回复------
既然知道会有这样的错误那就要避免他发生,而不是改错误消息,你在保存前先判断要求输入的字段是否已经输入数据,那就不会出现这样的问题了.

------华软网友回复------
比如数据录入的数据窗口中当用户添加一行后没有把该行填写完整(有的关键字也没有填写)就保存
系统会提示“××××can not be NUll ……”之类的错误


数据窗口的DBERROR事件中,可以写自己的错误提示
------华软网友回复------
比如数据录入的数据窗口中当用户添加一行后没有把该行填写完整(有的关键字也没有填写)就保存
系统会提示“××××can not be NUll ……”之类的错误


在数据窗口的DBERROR事件中,可以写自己的错误提示
------华软网友回复------
但是我们怎么才能判断某行是新添加的、插入的、修改过的
总不能对整个数据窗口中的数据都去一条一条的判断是否合法?

------华软网友回复------
每一個錯誤類型,pb都會有一個對應的錯誤代號,
你可以在dberror事件中,有一個參數sqldbcode,你可以根据這個值去判斷發生了什么樣式的錯誤,然后給出相應的中文提示.
------华软网友回复------
zwfhome1(任由风吹)大哥:
您说的dberror事件中错误代码怎么获取,各自代表什么含义?
------华软网友回复------
sqldbcode的含义查不到呀
------华软网友回复------
error.number的值换成中文列出来,供大家参考:

1: 被零除
2:引用空对象
3:数组越界
4:枚举值超出函数范围
5:函数中遇到负值
6:指定的数据窗口行/列无效
7:联接引用时,出现不可解决的外部引用
8:引用带有空下标的数据
9:DLL函数未在当前程序中
10:DLL函数不支持的参数类型
11:对象文件已过期,必须转化为当前版本
12:数据窗口列类型与GETITEM类型不匹配
13:不可知的属性引用
14:为外部函数打开错误DLL库
15:错误调用外部函数
16:超出最大字符串长度
17:数据窗口控件中引用的数据窗口对象不存在
18:函数未返回值
19:不能将任意变量中NAME转化为NAME
20:没有成功地准备好数据库命令
21:运行时,不正确地引用函数
22:不可知的对象类型
23:不能将NAME类型的对象赋值为NAME类型的对象
24:函数调用与其定义不匹配
25:DOUBLE或REAL表达式溢出
26:不支持对NAME字段的赋值
27:非整数指数不能为负
28:VBX错误:NAME
29:ANY变量需要非整组值


------华软网友回复------
dberror里面给出的都是一些英文的东西,转换报错很麻烦,一般来说都是在update之前检查所有不能为空的字段,检查完毕之后再update,还可以节省一次update的时间,提高效率
------华软网友回复------
li_d_s(我是小鬼-日货?送我都不要,哪怕是丰田和日产的轿车) 大哥:
我正想用你说的方法来实现
但是update前怎么获取那些需要操作的行呀
不会是从第一行起逐行进行检查吧??
——如果数据窗口中的数据多的话(也显示以前的数据)效率恐怕…………
------华软网友回复------
一般就是两类错:null 和 唯一

------华软网友回复------
dbeeror:
il_sqlcode = sqldbcode

return 1

il_sqlcode 是实例变量

--------------------------------
ll=dw_1.update()
if  ll = 1 then
commit;
messagebox('提示','保存成功')
else
rollback;
if il_sqlcode = -196 then
messagebox('警告:保存失败','数据重复,请检查')
else
messagebox('警告','保存失败',StopSign!)
end if
end if
------华软网友回复------
逐行检查是可以的,如果你要省事,可以先判断一下该行数据的状态,如果是datamodified就检查,是notmodified就不用检查,获取状态用dw_1.getitemstatus函数
------华软网友回复------
我通常都是在DW的itemfocuschanged中做检查,这样输入数据不合法时,当时就会给出提示。
------华软网友回复------
error.number的值换成中文列出来,供大家参考:

1: 被零除
2:引用空对象
3:数组越界
4:枚举值超出函数范围
5:函数中遇到负值
6:指定的数据窗口行/列无效
7:联接引用时,出现不可解决的外部引用
8:引用带有空下标的数据
9:DLL函数未在当前程序中
10:DLL函数不支持的参数类型
11:对象文件已过期,必须转化为当前版本
12:数据窗口列类型与GETITEM类型不匹配
13:不可知的属性引用
14:为外部函数打开错误DLL库
15:错误调用外部函数
16:超出最大字符串长度
17:数据窗口控件中引用的数据窗口对象不存在
18:函数未返回值
19:不能将任意变量中NAME转化为NAME
20:没有成功地准备好数据库命令
21:运行时,不正确地引用函数
22:不可知的对象类型
23:不能将NAME类型的对象赋值为NAME类型的对象
24:函数调用与其定义不匹配
25:DOUBLE或REAL表达式溢出
26:不支持对NAME字段的赋值
27:非整数指数不能为负
28:VBX错误:NAME
29:ANY变量需要非整组值
--------------------
参考一下
------华软网友回复------
保存前检查用户输入数据的合法性
------华软网友回复------
保存数据前, 一个一个的check 数据的合法性!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。