以文本方式查看主题

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

--  作者:唐尸三摆手
--  发布时间:2010/12/17 14:26:00
--  请教日期型菜单控件的使用

Dim da As Date=RibbonTabs("功能区1").Groups("功能组1").Items("日期输入框1").value
Dim db As Date=RibbonTabs("功能区1").Groups("功能组1").Items("日期输入框2").value
If da isnot null AndAlso db is notnull  AndAlso da<db Then       \'如果两个日期控件均填写了日期,而且开始日期小于截止日期,那么

执行的代码.........

end if

 

 

请教红色部分如何才能做到最标准书写方式


--  作者:狐狸爸爸
--  发布时间:2010/12/17 14:48:00
--  
If da isnot nothing AndAlso db isnot nothing  AndAlso da<db Then
--  作者:唐尸三摆手
--  发布时间:2010/12/17 15:06:00
--  

一、老大请看这段代码,假定菜单有两个日期控件和一个按钮,按钮代码如下:

Dim da As Date=RibbonTabs("功能区1").Groups("功能组1").Items("日期输入框1").value
Dim db As Date=RibbonTabs("功能区1").Groups("功能组1").Items("日期输入框2").value
If da isnot Nothing AndAlso db isnot Nothing  AndAlso da<db Then
    MessageBox.Show("ok!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
Else
    MessageBox.Show("日期填写不全或结束日期早于开始日期","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

 在两个日期控件均无数据的前提下,点击按钮后报错:

 
图片点击可在新窗口打开查看此主题相关图片如下:screenshot21.jpg
图片点击可在新窗口打开查看

然后将代码改为:

Dim da As String=RibbonTabs("功能区1").Groups("功能组1").Items("日期输入框1").value
Dim db As String=RibbonTabs("功能区1").Groups("功能组1").Items("日期输入框2").value

If da isnot Nothing AndAlso db isnot Nothing  AndAlso da<db Then
    MessageBox.Show("ok!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
Else
    MessageBox.Show("日期填写不全或结束日期早于开始日期","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

点击按钮提示"日期填写不全或结束日期早于开始日期",OK。(这是预定的结果)

 

 

 

二、然后我又换了个方式:

Dim da As date=RibbonTabs("功能区1").Groups("功能组1").Items("日期输入框1").value
Dim db As date=RibbonTabs("功能区1").Groups("功能组1").Items("日期输入框2").value
If da is Nothing Or db is Nothing Then
    MessageBox.Show("日期填写不全!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
Else If da>db Then
    MessageBox.Show("结束日期不得早于开始日期!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
Else
    MessageBox.Show("ok!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

继续报错
 


图片点击可在新窗口打开查看此主题相关图片如下:screenshot22.jpg
图片点击可在新窗口打开查看

 

然后同样更改代码为:

Dim da As String=RibbonTabs("功能区1").Groups("功能组1").Items("日期输入框1").value
Dim db As String=RibbonTabs("功能区1").Groups("功能组1").Items("日期输入框2").value

If da is Nothing Or db is Nothing Then
    MessageBox.Show("日期填写不全!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
Else If da>db Then
    MessageBox.Show("结束日期不得早于开始日期!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
Else
    MessageBox.Show("ok!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

明明日期控件没有内容,为何执行后提示


图片点击可在新窗口打开查看此主题相关图片如下:screenshot23.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2010-12-17 15:13:18编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/12/17 15:12:00
--  

不输入值的时候,messagebox.show(da),看看值等于多少,然后通过比较这个值,判断是否输入了


--  作者:唐尸三摆手
--  发布时间:2010/12/17 15:18:00
--  

messagebox.show(da)结果显示2010-12-17

看来日期控件即使不输入内容也是默认当前日期了

 

另外此处

Dim da As String=RibbonTabs("功能区1").Groups("功能组1").Items("日期输入框1").value
Dim db As String=RibbonTabs("功能区1").Groups("功能组1").Items("日期输入框2").value

 

一定要用string而不能用date吗,有点不明白


--  作者:狐狸爸爸
--  发布时间:2010/12/17 15:39:00
--  

日期不可能为nothing,字符可以,你可以看看:

http://help.foxtable.com/topics/0395.htm

 

 

你可以给日期框设置一个初始值,例如1900-1-1,来比较这个值看看是否已经输入。

[此贴子已经被作者于2010-12-17 15:40:41编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/12/17 16:01:00
--  
我给菜单的日期输入框加一个ValueIsNull属性算了,用于判断是否输入了值。