用VB编程,要求:在一个textbox中输入一个日期2012-9-9,按确认后在另一个text中显示后一天2012-9-10。

年份有范围、月份超出要提示错误,天数超出也要提示错误。我已经编程成这样:PrivateSubCommand1_Click()IfIsDate(Text1.Text)The... 年份有范围、月份超出要提示错误,天数超出也要提示错误。我已经编程成这样:
Private Sub Command1_Click()
If IsDate(Text1.Text) Then
If Year(CDate(Text1.Text)) >= 1912 And Year(CDate(Text1.Text)) <= 2050 Then
Text2.Text = DateAdd("d", 1, Text1.Text)
Else
Text2.Text = "年份超出范围"
End If
End If
End Sub
现在怎么增加月份和天数的限制和提示?
月份超出12月份,如:2012-13-12,会提示月份不合法,2012-12-33,会提示天数不合法,我没学过VB,不过现在我们要用VB编个小程序来进行软件测试,窗体如下:

在上个text输入一个日期,如果合法,按确认之后会在下面text里显示下一个日期,如:

如果不合法,按确认后在下面text里显示提示,如年份不合法,下面text会输入:年份超出规定范围,
我现在编程只到这步,下面还有月份和天数的提示,我不知道该怎么继续写下去,求高手指点,谢谢!
展开
 我来答
网海1书生
科技发烧友

2012-10-20 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12310 获赞数:26223

向TA提问 私信TA
展开全部
你一开始的这个IsDate(Text1.Text)就已经决定了所有非法的日期数(包括月份和天数错误的)都已经排除在外了。
其实实际编程中,除了年份限定有意义之外,月份和天数是无需单独检测的,只需检测是否合法即可。所以你的程序做到这样就可以了。最多就是再加个提示:
Private Sub Command1_Click()
If IsDate(Text1.Text) Then
If Year(CDate(Text1.Text)) >= 1912 And Year(CDate(Text1.Text)) <= 2050 Then
Text2.Text = DateAdd("d", 1, Text1.Text)
Else
Text2.Text = "年份超出范围"
End If
Else
Text2.Text = "日期格式错误"
End If
End Sub
追问
可是当我输入的月份或者天数超出范围,是没法输出任何东西的,比如我输入:2012-13-12,那么下一日期是没法输出,或者有什么提示,我想要的是当我输入2012-13-12后,下面text输出月份超出范围,天数也是一样的道理,我是用来做软件测试的,当我输入这些测试用例的时候,我希望会有这些提示,要是没有提示也没有输出任何信息,那么这个软件就是有BUG的,所以我现在才需要改进
追答
Text2.Text = "日期格式错误"
这个不是提示?
czduanyh
2012-10-20 · TA获得超过442个赞
知道小有建树答主
回答量:360
采纳率:0%
帮助的人:312万
展开全部
If Year(CDate(Text1.Text)) >= 1912 And Year(CDate(Text1.Text)) <= 2050 Then
改为
If CDate(Text1.Text) >= #1912-1-1# And CDate(Text1.Text) <= #2050-12-31# Then

Text2.Text = "年份超出范围"
适当改一下
追问
年份(1912~2050)、月份(1~12)、天数(月份不同,天数不一样)都不能超出范围,只要其中一个超出范围,都会有相应的提示,如年份是1911,则提示年份不在规定范围内,月份和天数也一样
追答
“月份超出12月份,如:2012-13-12,会提示月份不合法,2012-12-33,会提示天数不合法,”都能在
If IsDate(Text1.Text) Then
中判断出。

你的问题主要是天数不好判断,给你一个计算某年某月天数的函数
Private Function GetDays(y As Integer, m As Integer)
Dim n As Integer

If ((y Mod 4 = 0 And y Mod 100 0) Or y Mod 400 = 0) Then
n = 1
Else
n = 2
End If

Select Case m
Case 2
GetDays = IIf(n = 1, 29, 28)
Case 4, 6, 9, 11
GetDays = 30
Case 1, 3, 5, 7, 8, 10, 12
GetDays = 31
End Select
End Function

调用方法
某年某月天数 = GetDays(year(CDate(Text1.Text)), Month(CDate(Text1.Text)))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ffe7f1a
2012-10-20 · TA获得超过205个赞
知道小有建树答主
回答量:617
采纳率:0%
帮助的人:438万
展开全部
你只需要确认年份不超限定就可以了。因为VB6.0中的日期计算时系统会自动修正日期的。
比如:dateadd("d",1,2012-2-29)=2012-3-1
dateadd("d",1,2011-2-28)系统也会计算为2012-3-1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
江鱼11
2012-10-21 · 超过15用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:39.1万
展开全部
不用那么做,只要将字符强制转化为时间格式就行了,如果不是日期会报错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
whowhatwhen
2012-10-20
知道答主
回答量:13
采纳率:0%
帮助的人:4.6万
展开全部
不用输入,用选择日期控件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
captain_neu
2012-10-20 · TA获得超过164个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:101万
展开全部
用VB2008来实现,可否?
追问
我用的是VB6.0,不知道2008的能不能用
追答
vb2008的代码不能在6.0上运行。那你是否需要vb2008的代码?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式