-- 作者:狐狸爸爸
-- 发布时间:2010/5/22 22:55:00
--
这是最常见的错误了,楼主作为最早参与测试的用户,还被这种问题困扰是不应该的。
例如,在订单表中输入产品名称后,希望能够自动从产品表中取得对应产品的单价,并填入到单价列中,不少用户可能会如下编写代码:
1 2 3 4 5 6 7 8 9 10 |
If e.DataCol.Name = "产品名称"
Then
\'如果内容发生变动的是产品列 If e.NewValue Is Nothing
Then
\'如果新值是空白,也就是产品列的内容为空 e.DataRow("单价") = Nothing
\'那么清空此行单价列的内容 Else \'否则在产品表查找同名的产品行,将找到的行赋值给变量dr Dim dr As
DataRow dr = DataTables("产品").Find("[产品名称] = \'" & e.NewValue & "\'") e.DataRow("单价") = dr("单价") End
If End
If
|
上面的代码看上去是没有问题的,但是疏忽了一个问题,就是订单表所输入的产品,可能在产品表中并不存在对应的行,这样第7行代码运行后,变量dr等于空值Nothing,从而导致第8行代码出错。
要怎么改,就不用我说了,这只是一个例子,凡是用到查找的地方,都要考虑找不到的情况。
[此贴子已经被作者于2010-5-22 22:56:48编辑过]
|