Foxtable(狐表)用户栏目专家坐堂 → [分享]纪念我在VB的一个坑的解决


  共有3196人关注过本帖树形打印复制链接

主题:[分享]纪念我在VB的一个坑的解决

帅哥哟,离线,有人找我吗?
hitzfeld
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:537 积分:5272 威望:0 精华:0 注册:2017/9/1 23:28:00
[分享]纪念我在VB的一个坑的解决  发帖心情 Post By:2020/11/1 0:23:00 [只看该作者]

问题的产生是在我要判断一个日期控件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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:574 积分:4258 威望:0 精华:0 注册:2015/5/13 8:32:00
  发帖心情 Post By:2020/11/1 9:07:00 [只看该作者]

Dim Day As Date = e.Form.Controls("sxrq").value
If  day = Nothing  Then
MSGBOX("请先选择生效日期")
Return
Else

 回到顶部
帅哥哟,离线,有人找我吗?
cbt
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:574 积分:4258 威望:0 精华:0 注册:2015/5/13 8:32:00
  发帖心情 Post By:2020/11/1 9:09:00 [只看该作者]

Dim rq  As WinForm.DateTimePicker  = e.Form.Controls("sxrq")
If  rq.value is Nothing  Then
MSGBOX("请先选择生效日期")
Return
Else

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/1 20:37:00 [只看该作者]

2楼3楼正解,帮助搜“空值”,有相关的说明的

 回到顶部