这里的代码没有在totaldate
的过程中工作,因为我检查它没有从date1
和date2
减去,但他们已经得到了他们的值,如
Text1 = 2/10/2019
Text2 = 2/8/2019
我试图从两个文本框Text1
和Text2
中减去两个日期,我已经确保它们的格式是短日期。
我确实让它只是totaldate = Text1 - Text2
但它也没有用
Sub tgl()
date1 = Text1
date2 = Text2
totaldate = date1 - date2
fine = totaldate * 50
End Sub
在这个输出中总结所有的日期,它将在你减去Text1
和Text2
后剩下2天,然后你乘以50
所以你将获得变量fine = 100
的值
MS Access中的日期存储为自1899年12月30日午夜起经过的天数,时间分量以十进制格式表示为一天的一小部分,例如:
?cdate(1.5)
31/12/1899 12:00:00
如果您的日期值没有时间分量,那么简单地减去两个日期值确实会产生分隔两个日期的天数:
?#2019-02-10#-#2019-02-08#
2
但是,如果您的日期时间值也有时间分量,那么执行两个值的基本减法将产生一个double,而不是整数值:
?#2019-02-10 09:30#-#2019-02-08 07:00#
2.10416666667152
因此,您需要使用DateDiff
函数,指定days
的间隔,或使用DateValue
函数返回日期时间值的日期组件:
?DateDiff("d",#2019-02-08 07:00#,#2019-02-10 09:30#)
2
?DateValue(#2019-02-10 09:30#)-DateValue(#2019-02-08 07:00#)
2
考虑到这一点,您可以考虑将Sub更改为以下内容(假设这是在表单模块中定义的,其中变量Text1
和Text2
在范围内):
Sub tgl()
Dim fine As Long
fine = (DateValue(Text1) - DateValue(Text2)) * 50
End Sub
这也将说明您的Text1
和Text2
值是否为字符串而不是日期值。
使用DateDiff
函数
DateDiff("d", date1 , date2)