以文本方式查看主题

-  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=1260)

--  作者:t_fs
--  发布时间:2008/11/28 8:27:00
--  购买狐表
   窗口中有二个日期录入控件("Datetimepicker1") 和("Datetimepicker2") ,用下列代码判断没出现错误提示。但当这二个控件之一或都为空值时,并没出现提示,程序继续向下运行,是什么原因?请求帮助了,谢谢!

if e.Form.Controls("Datetimepicker1") Is Nothing or e.Form.Controls("Datetimepicker2") Is Nothing Then
    MessageBox.Show("请 您 正 确 选 择 汇 总 日 期 !","提示")
   return
end if

--  作者:狐狸爸爸
--  发布时间:2008/11/28 8:57:00
--  
if e.Form.Controls("Datetimepicker1").value Is Nothing or e.Form.Controls("Datetimepicker2").value Is Nothing Then
end if
--  作者:ybil
--  发布时间:2008/11/28 9:20:00
--  
好像有问题,无论是否输入日期,都提示!
if e.Form.Controls("Datetimepicker1").value Is Nothing  Then
       MessageBox.Show("請輸入日期!","提示")
end if

--  作者:t_fs
--  发布时间:2008/11/28 9:25:00
--  
Dim A As New Date
   谢谢回复!

Dim b As New Date
A =e.Form.Controls("Datetimepicker1").value
B =e.Form.Controls("Datetimepicker2").value 
if e.Form.Controls("Datetimepicker1").value Is Nothing  or e.Form.Controls("Datetimepicker2").value Is Nothing  then
MessageBox.Show("请 您 正 确 选 择 汇 总 日 期 !","提示")
return
end if 

   上述为正确代码,若将第四行判断句换成:if A is nothing or B is nothing then

   编译时就会出现错误,不知何故?

--  作者:狐狸爸爸
--  发布时间:2008/11/28 9:39:00
--  
以下是引用ybil在2008-11-28 9:20:00的发言:
好像有问题,无论是否输入日期,都提示!
if e.Form.Controls("Datetimepicker1").value Is Nothing  Then
       MessageBox.Show("請輸入日期!","提示")
end if


需要注意一个细节,你在某个框中输入的内容,必须离开这个框,才会写入到Value属性!


--  作者:狐狸爸爸
--  发布时间:2008/11/28 9:40:00
--  
以下是引用t_fs在2008-11-28 9:25:00的发言:
Dim A As New Date
   谢谢回复!

Dim b As New Date
A =e.Form.Controls("Datetimepicker1").value
B =e.Form.Controls("Datetimepicker2").value 
if e.Form.Controls("Datetimepicker1").value Is Nothing  or e.Form.Controls("Datetimepicker2").value Is Nothing  then
MessageBox.Show("请 您 正 确 选 择 汇 总 日 期 !","提示")
return
end if 

   上述为正确代码,若将第四行判断句换成:if A is nothing or B is nothing then

   编译时就会出现错误,不知何故?


A和B是日期型,不可能是Nothing.


Nothing

变量可能不包括任何内容,也就是空值。
在Visual Basic中,空值用Nothing表示。
有两个特殊的运算符,用于判断变量的值是不是Nothing,分别是Is和IsNot,前者的意思是“是”,后者的意思是“不是”。
语法为:

变量名 Is Nothing

如果变量值为Nothing,则返回True,否则返回False。

变量名 IsNot Nothing

如果变量值不为Nothing,则返回True,否则返回False。

Dim str1 As String
Dim
Str2 AS String = "FoxTable"
If
str1 Is Nothing Then
    Output.Show(
"Str1是空值!")
End
If
If
str2 IsNot Nothing Then
    Output.Show(
"Str2不是空值!")
End
If

需要注意的是,数值、日期、逻辑三种类型的变量,是永远不会为空的,其它任何类型的变量,如果没有明确赋值,其初始值都是Nothing

 

 


--  作者:t_fs
--  发布时间:2008/11/28 10:14:00
--  
数值、日期、逻辑三种类型的变量,是永远不会为空的


  关键在这句话上了。谢谢了!