以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于空值  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=3528)

--  作者:狐哥
--  发布时间:2009/7/11 14:49:00
--  关于空值

这是因为即使某列的值为空,其返回的值也不会是Nothing
在某列内容为空的时候,会根据不同的列类型,返回不同的值,规则如下:

字符列:""
数值列:0
逻辑列:False
日期列:#0001-01-01 0:00:00#

能否说明,在何种类型的列时用哪个最好一点呢.举个权限列子:

我在PrepareEdit中设了如下代码:
If e.Row("收付编号") <> "" Then '收付编号列为字符形
    e.Cancel = True
End If

此代码没有问题,但如设为如下:
If e.Row.isnull("收付编号") = false Then
    e.Cancel = True
End If
此代码则所有行都编辑不了,即使 收付编号为空值.也没有反映,我再试 isnot nothing ,也是一样没反映.

也就是说:null 及Nothing 对于字符列返回的值不是""

哪:
对于字符列,只能用""来判断
对于数值列和日期列,只能用ISNULL来判断(因数值列的空值返回的是0)
nothing 只能应用于所返回的显示结果.XX列 = nothing,而不能进行判断.

不知是否对,请老师再试试看对不对.

[此贴子已经被作者于2009-7-11 14:52:43编辑过]

--  作者:lxl
--  发布时间:2009/7/11 15:02:00
--  
If e.Row.isnull("收付编号") = false Then
    e.Cancel = True
End If
此代码则所有行都编辑不了,即使 收付编号为空值.也没有反映,我再试 isnot nothing ,也是一样没反映.


这个代码应该没问题,能正常工作。
你发个简单的文件看看。


--  作者:狐哥
--  发布时间:2009/7/11 15:42:00
--  
哈,这个没有文件啦,随便在一个表中录入就OK了

If e.Row.isnull("第一列") = false Then
    e.Cancel = True
End If

刚说错,这个OK,是我在另外又设了锁定公式.
[此贴子已经被作者于2009-7-11 15:46:58编辑过]