Как сделать пользовательскую функцию округления в моей ситуации? - PullRequest
2 голосов
/ 23 марта 2019

У меня есть таблица с четырьмя временными полями Time1 до Time4, и после этого у меня есть другое поле, которое вычисляет общее количество часов путем вычитания 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, которая может это сделать?

Надеюсь, я хорошо объяснил!

Моя таблица и примеры

My Table & Examples 1

Я пробовал таким образом, но не работает вообще:

Tried this way but NOt working at all

Спасибо за вашу помощь:)

1 Ответ

1 голос
/ 23 марта 2019

Как это:

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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...