我在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_until] - [time_from]) 我想总和应该给我33:50 ......但它给了我9:50。为什么会这样?有办法解决这个问题吗?
更新: 当我这样说的时候:
=Format(Sum([vrijeme_do]-[vrijeme_od])*24)
我得到一个小数点数...我认为这是正确的.... 例如,25小时和30分钟显示为25,5
但是,如何将这个25,5格式化为25:30?
答案 0 :(得分:2)
与@HansUp的答案类似,可以在没有VBA代码的情况下完成
Format(24 * Int(SUM(elapsed_time)) + Hour(SUM(elapsed_time)), "0") & ":" & Format(SUM(elapsed_time), "Nn")
答案 1 :(得分:2)
正如@Arvo在评论中提到的,这是一个格式化问题。 calculated_field 之和的预期结果是 33:50 。但是,该总和是日期/时间值,并且由于小时数大于24,因此日期/时间的日期部分提前1,余数 9:50 显示为时间。显然,您的总数被格式化为仅显示时间部分;不显示日期部分。
但是 calculated_field 之和的实际日期/时间值是#12/31/1899 09:50#。您可以使用自定义函数以所需格式显示该值:
? duration_hhnn(#12/31/1899 09:50#)
33:50
这是功能:
Public Function duration_hhnn(ByVal pInput As Date) As String
Dim lngDays As Long
Dim lngMinutes As Long
Dim lngHours As Long
Dim strReturn As String
lngDays = Int(pInput)
lngHours = Hour(pInput)
lngMinutes = Minute(pInput)
lngHours = lngHours + (lngDays * 24)
strReturn = lngHours & ":" & Format(lngMinutes, "00")
duration_hhnn = strReturn
End Function
请注意,该函数返回一个字符串值,因此您无法直接对其进行日期算术运算。
答案 2 :(得分:0)
我猜你是想在文本框中显示总数?正确的表达式为=SUM([calculated_field_name]).