Datetime 访问中的正确小时数总和

Datetime 访问中的正确小时数总和,datetime,ms-access,sum,Datetime,Ms Access,Sum,access 2010数据库中有两列,其中包含一些计算字段: time_from time_until calculated_field(time_until-time_from) 10:45 15:00 4:15 13:15 16:00 2:45 11:10 16:00 4:50 08:00 15:00 7:00 08:00 23:00 15:00 现在,到目前为止

access 2010数据库中有两列,其中包含一些计算字段:

time_from time_until calculated_field(time_until-time_from)
10:45      15:00         4:15
13:15      16:00         2:45
11:10      16:00         4:50
08:00      15:00         7:00
08:00      23:00        15:00
现在,到目前为止,它是好的:计算领域做了它的工作,告诉我总小时和分钟。。。 现在,我需要一个计算字段的和。。。。 我输入了一个表达式生成器:=Sum([time\u-to]-[time\u-from]) 我想总数应该是33:50。。。但它给了我大约9:50。为什么会这样?有办法解决这个问题吗

更新: 当我这样说的时候:

=Format(Sum([vrijeme_do]-[vrijeme_od])*24)
我得到一个小数点。。。我想这是正确的。。。。 例如,25小时和30分钟显示为25,5


但是,如何将25,5的格式设置为25:30

我想你是想在文本框中显示总数?正确的表达式应该是
=SUM([computed_field_name])。

与@HansUp的答案类似,在没有VBA代码的情况下也可以这样做

格式(24*Int(总和(经过的时间))+Hour(总和(经过的时间)),“0”)和“:”格式(总和(经过的时间),“Nn”)

正如@Arvo在他的评论中提到的,这是一个格式问题。计算的_字段之和的预期结果为33:50。但是,该总和是一个日期/时间值,由于小时数大于24,因此日期/时间的日部分提前1,剩余的9:50显示为时间。很明显,你的总数被格式化为只显示时间部分;不显示日部分

但计算的_字段之和的实际日期/时间值为#12/31/1899 09:50#。您可以使用自定义函数以所需格式显示该值:

?持续时间(1899年12月31日09:50)
33:50
这就是功能:

Public Function duration\u hhnn(ByVal pInput As Date)作为字符串
暗淡的长发
暗淡的lng分钟与长
昏暗的长廊
变暗strReturn为字符串
lngDays=Int(pInput)
lngHours=小时(pInput)
lngMinutes=分钟(pInput)
lngHours=lngHours+(lngDays*24)
strReturn=lngHours&“:”&格式(lngMinutes,“00”)
持续时间=strReturn
端函数

注意:该函数返回一个字符串值,因此您不能直接对其进行进一步的日期运算。

这是一个更大的格式问题-9:50是结果的时间部分,缺少天数计数(1d=24小时)。我会将结果转换成小时和分钟,然后自己格式化。如果我把name\u of\u放在\u calc\u字段中,那么它就不起作用了。唯一的解决办法是把公式放在sumthank里面。。。我是一个初学者,所以我恐怕要问你把这个代码放在哪里。。。如何称呼它……:)但是谢谢你,把它保存在一个标准模块里。您可以使用Ctrl+g在VB编辑器环境中打开即时窗口。从主菜单中,选择插入->模块。粘贴代码并保存模块。不要使用函数名作为模块名。然后使用它,我猜您可以将
格式(Sum([vrijeme_-Do]-[vrijeme_-od])*24)
更改为
持续时间(Sum([vrijeme_-Do]-[vrijeme_-od])
,我认为Gord的答案对您来说应该更容易。我建议你接受他的回答,而不是我的。我更喜欢这个。《小时》这篇文章的
格式
表达有什么优势吗?我不认为它有什么显著的区别,只是稍微简洁一点。我爱你,哥德!我欠你的债。这太神奇了。很好,谢谢你的努力。你们真了不起。你救了我。