如何在我的情况下进行自定义舍入功能?

问题描述 投票:2回答:1

我有一个表有四个时间字段Time1Time4,之后,我有另一个字段,通过减去Time4 - Time1 = Real Hours计算总小时数。

在计算之后,我想要将每个数字舍入30分钟,例如:

  1. 2:30应保持原样。
  2. 1:14我想把这个高达30意味着1:30
  3. 1:41我想把这个最多2个意味着2:00

除了00以外,30分钟到30分钟以及30分钟以外的30分钟到1小时。

我怎样才能做出这样的事情呢?是否有内置的ms访问功能可以做到这一点?

我希望我解释得很好!

我的表格和例子

我试过这种方式,但根本没有工作:

谢谢你的帮助 :)

ms-access access-vba rounding
1个回答
1
投票

像这样:

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]))

Result values

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

ValStAuf显示数值。

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

© www.soinside.com 2019 - 2024. All rights reserved.