VB6.0为什么使用Datediff函数时有时候老是出现即时错误'13'类型不符?
在VB6中,类似下面的声明变量的方式其实是错误的(至少是不合理的):
Dim T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 As Date
因为它相当于:
Dim T1
Dim T2
Dim T3
Dim T4
Dim T5
Dim T6
Dim T7
Dim T8
Dim T9
Dim T10 As Date
也就是说只有T10才是你预料中的Date型,而T1到T9都是默认的Variant型!
虽然说Variant型变量也可以作为DateDiff的参数(VB会自动把它转换为Date型),但是如果你文本框中输入的字符串不符合日期型规范,VB就无法把它转为Date型,只能作为字符串来处理,这样就会出现“类型不符”的出错提示了!
正确的方法应该是这样的:
Dim T1 As Date, T2 As Date, T3 As Date, T4 As Date, T5 As Date, T6 As Date, T7 As Date, T8 As Date, T9 As Date, T10 As Date
是的,你会觉得这看起来太罗嗦了,但是,简洁的东西不一定就是对的,啰嗦意味着安全(就像你们的父母经常在你们耳朵边唠叨的一样)。
现在还有一个问题,就是假如文本框中输入的时间数据错误,那么把它直接赋值给Date型变量时会出错的,那么可以这样来处理:
If IsDate(Form2.Text1.Text) Then '如果Text1输入的内容符合日期时间规范
T1 = CDate(Form2.Text1.Text) '把Text1转换为Date型赋值给T1
Else '如果不符合规范
MsgBox "Text1的内容错误!" '提示并退出
Exit Sub
End If
其他T2、T3……也同样处理。
补充说一句,在VB.NET中,类似Dim T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 As Date的变量声明方法则是没问题的,所有变量都会是Date型
谢谢!多谢了!