以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  帮忙看看这个错误提示是什么意思?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=7178)

--  作者:cpayinyuan
--  发布时间:2010/5/22 18:14:00
--  帮忙看看这个错误提示是什么意思?

如题。

 


图片点击可在新窗口打开查看此主题相关图片如下:列出错提示.jpg
图片点击可在新窗口打开查看

--  作者:mr725
--  发布时间:2010/5/22 21:15:00
--  
估计很难,最好贴出相关代码···    多半是列名称有误,或类型不匹配···(遐想)
--  作者:狐狸爸爸
--  发布时间: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编辑过]