Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access VBA中日期之间的总和_Ms Access_Vba - Fatal编程技术网

Ms access VBA中日期之间的总和

Ms access VBA中日期之间的总和,ms-access,vba,Ms Access,Vba,这里的代码在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

这里的代码在
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
,然后乘以
50
,将得到变量
fine=100
的值,使用
DateDiff
函数

DateDiff("d", date1 , date2)

使用
DateDiff
函数

DateDiff("d", date1 , date2)

MS Access中的日期存储为自1899年12月30日午夜以来经过的天数,时间分量以十进制格式表示为一天的小数,例如:

cdate(1.5) 31/12/1899 12:00:00 如果日期值没有时间成分,则只需减去这两个日期值即可得出两个日期之间的间隔天数:

?#2019-02-10#-#2019-02-08#
2.
但是,如果datetime值也有一个时间分量,则对两个值执行基本减法将产生一个双精度值,而不是一个整数值:

?#2019-02-10 09:30#-#2019-02-08 07:00#
2.10416666667152
因此,您需要使用
DateDiff
函数指定
days
的间隔,或者使用
DateValue
函数返回datetime值的日期组件:

?日期差异(“d”、#2019-02-08 07:00、#2019-02-10 09:30)
2.
?日期值(#2019-02-10 09:30#)-日期值(#2019-02-08 07:00#)
2.

考虑到这一点,您可以考虑将您的子更改为以下几行(假设这是在您的表单模块中定义的,其中变量<代码> Text 1/代码> &代码> Text 2< /代码>在范围内):

Sub-tgl()
暗淡的细如长
精细=(日期值(Text1)-日期值(Text2))*50
端接头

如果您的
Text1
Text2
值是字符串,而不是日期值,这也可以解释。

MS Access中的日期存储为自1899年12月30日午夜以来经过的天数,时间分量以十进制格式表示为一天的小数,例如:

cdate(1.5) 31/12/1899 12:00:00 如果日期值没有时间成分,则只需减去这两个日期值即可得出两个日期之间的间隔天数:

?#2019-02-10#-#2019-02-08#
2.
但是,如果datetime值也有一个时间分量,则对两个值执行基本减法将产生一个双精度值,而不是一个整数值:

?#2019-02-10 09:30#-#2019-02-08 07:00#
2.10416666667152
因此,您需要使用
DateDiff
函数指定
days
的间隔,或者使用
DateValue
函数返回datetime值的日期组件:

?日期差异(“d”、#2019-02-08 07:00、#2019-02-10 09:30)
2.
?日期值(#2019-02-10 09:30#)-日期值(#2019-02-08 07:00#)
2.

考虑到这一点,您可以考虑将您的子更改为以下几行(假设这是在您的表单模块中定义的,其中变量<代码> Text 1/代码> &代码> Text 2< /代码>在范围内):

Sub-tgl()
暗淡的细如长
精细=(日期值(Text1)-日期值(Text2))*50
端接头

如果您的
Text1
Text2
值是字符串,而不是日期值,则这也将说明问题。

您收到的“特定”错误消息是什么?我可以看到这里出现了一些不同的问题
date1=Text1
可能会失败(或者实际上只是返回“”),因为它没有引用工作表aka应该是
date1=FormNameHere.Text1BoxNameHere.Value
。如果您提前调暗变量以确保它们不会被错误转换,这也很有帮助
Dim date 1 as date
等。之后,如果两者都是实际日期,则可以减去它们,并按预期得到
2
。没有错误消息,只是当我每行执行一个时,我没有从
totaldate
中得到任何值,但是在
date1
date2
中都有值,但是当我减去这些值时,
totaldate
值变为空,您收到的“特定”错误消息是什么?我可以看到这里出现了一些不同的问题
date1=Text1
可能会失败(或者实际上只是返回“”),因为它没有引用工作表aka应该是
date1=FormNameHere.Text1BoxNameHere.Value
。如果您提前调暗变量以确保它们不会被错误转换,这也很有帮助
Dim date 1 as date
等。之后,如果两者都是实际日期,则可以减去它们,并按预期得到
2
。没有错误消息,只是当我每行执行一个时,我没有从
totaldate
中得到任何值,但是在
date1
date2
中都有值,但是当我减去这些值时,
totaldate
值变为空。谢谢,我只是把一些变量设为Date,然后它最终可以求和。谢谢,我只是把一些变量设为Date,然后它最终可以求和