首页 > 解决方案 > 如何在我的情况下进行自定义舍入功能?

问题描述

我有一个表,其中有 4 个时间字段Time1Time4之后,我有另一个字段通过减去Time4 - Time1 = Real Hours.

计算后,我想将每个数字按 30 分钟四舍五入,例如:

  1. 2:30应该保持原样。
  2. 1:14我想将其四舍五入到 30 位1:30
  3. 1:41我想将其四舍五入为 2 的意思2:00

小于 30 的分钟舍入到 30,除了 00,大于 30 到 1 小时,除了 30。

我怎样才能使这样的事情成为可能?是否有任何内置的 ms-access 功能可以做到这一点?

我希望我解释得很好!

我的表格和示例

我的表和示例 1

我试过这种方式但根本不工作:

尝试过这种方式,但根本不工作

谢谢你的帮助 :)

标签: ms-accessvbarounding

解决方案


像这样:

Public Function RoundTimeUp( _
    ByVal datDate As Date) _
    As Date

    Const cintMult As Integer = 48 '30 minute round
    'Const cintMult As Integer = 96 '15 minute round
    'Const cintMult As Integer = 144 '10 minute round
    'Const cintMult As Integer = 288 '5 minute round
  
    RoundTimeUp = CDate(-Int(CDec(-datDate * cintMult)) / cintMult)

End Function

附录

如果时间值的数值可以是负数,则值将显示为四舍五入为了防止这种情况,请使用Abs

EX44Abs: RoundTimeUp(Abs([TimeField]))

结果值

Val0341保持常数:CDbl(#03:41:00#)

ValStAuf显示数值。

EX44显示不使用Abs的舍入时间,EX44Abs显示使用Abs的舍入时间。


推荐阅读