以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [分享]纪念我在VB的一个坑的解决  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=157881)

--  作者:hitzfeld
--  发布时间:2020/11/1 0:23:00
--  [分享]纪念我在VB的一个坑的解决
问题的产生是在我要判断一个日期控件DateTimePicker是否有输入值(也就是是否为空)的问题,然后我写了下面的代码:
Dim Day As Date = e.Form.Controls("sxrq").value
If TAB Is Nothing OrElse day Is Nothing  Then
MSGBOX("请先选择供应商和生效日期")
Return
Else
然后就报错了。然后找教程,发现下面的提示:
-----------------------------------------------------------------------------------------------------------------
需要注意的是,数值、日期、逻辑三种类型的变量,是永远不会为空的,其它任何类型的变量,如果没有明确赋值,其初始值都是Nothing。
数值型的初始值为0,逻辑型变量的初始值为False,日期型的初始值为#1/1/1 0:00:00#,如果你将Nothing赋给这些变量,也只是使得这些变量回到初始值而已。

-----------------------------------------------------------------------------------------------------------------
但是问题是,教程并没有说明要怎么判断DateTimePicker是否为空,然后我不断的尝试各种方法来判断,始终不能得到正确的答案。直到在VB.NET论坛搜索到一篇文章:

为什么我无法检查\'DateTime\'是否为\'Nothing\'?

https://cloud.tencent.com/developer/ask/113482
才明白过来,原来这个问题还真不简单。正确的代码如下
Dim Day As Date = e.Form.Controls("sxrq").value
If TAB Is Nothing OrElse day Is Nothing  Then
MSGBOX("请先选择供应商和生效日期")
Return
Else
简直是晕死我了!答案就是一个?。这个问题折腾了我三天了!终于被我搞定了!考虑到教程没有说到这个问题,所以斗胆发上来和初学者共享,同时纪念我在VB。net编程掉进的坑。


--  作者:cbt
--  发布时间:2020/11/1 9:07:00
--  
Dim Day As Date = e.Form.Controls("sxrq").value
If  day = Nothing  Then
MSGBOX("请先选择生效日期")
Return
Else

--  作者:cbt
--  发布时间:2020/11/1 9:09:00
--  
Dim rq  As WinForm.DateTimePicker  = e.Form.Controls("sxrq")
If  rq.value is Nothing  Then
MSGBOX("请先选择生效日期")
Return
Else

--  作者:有点蓝
--  发布时间:2020/11/1 20:37:00
--  
2楼3楼正解,帮助搜“空值”,有相关的说明的