powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как просуммировать часы?
12 сообщений из 37, страница 2 из 2
Как просуммировать часы?
    #32798910
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А вот как наиболее удобным образом его использовать в контексте часов
и минут?
Ну например так
Function ФорматПромежуткаВремениДляКарренси(p1 As Currency) As String
Dim i1 As Long
i1 = Int(p1)
ФорматПромежуткаВремениДляКарренси = _
Format(i1) & " ч. " & Format((p1 - i1) * 60) & " мин."
End Function

>Шарк, логика в применении денежного типа для выражения промежутка времени есть.

Извините за занудство:^) не только для промежутков, но и для практически любых дробных чисел
...
Рейтинг: 0 / 0
Как просуммировать часы?
    #32799024
Dmitry-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shark>1,25+2,75 будет 3,9999999999


А у денежнего формата нет таких "фишек"?
...
Рейтинг: 0 / 0
Как просуммировать часы?
    #32799078
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денежный формат это целое число, деленное на десять тыщ, так что там все пучком.
A double это мантисса и еще чето не помню названия:^), и ессно арифметика там приблизительная.
...
Рейтинг: 0 / 0
Как просуммировать часы?
    #32799087
Dmitry-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wow!
А я, по-наивности, все денежные суммы в доубл зарядил :(

Так; а если идет умножение доубл-числа на деньги результат как будет округляться?
...
Рейтинг: 0 / 0
Как просуммировать часы?
    #32799172
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Function fn2()
Dim a1 As Double
Dim a2 As Currency
a1 = 1
a2 = 1
Debug.Print TypeName(a1 * a2)
End Function


Double
...
Рейтинг: 0 / 0
Как просуммировать часы?
    #32799351
Iskander68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аналогично, прошу прощения за занудство.
Ну, функция перевода денег во время это понятно. Правда, ИМХО, Format()
здесь лишнее - тем паче с одним аргументом. Амперсанд и так неявно
преобразовывает в строку. К тому же минуты неплохо бы до целых округлить,
типа,
i1 & " ч. " & CInt((p1 - i1) * 60) & " мин."
Но это все детали. А вот что дальше делать? Ну получим мы вычисляемое поле.
Стало быть ввести в него данные нельзя - можно только посмотреть, чему
соответстует 6,89. А если нужно ввести 6 ч. 53 мин.? Делать свободное поле
для ввода строки, через другую функцию преобразовывать ее в карренси и по
некоему событию вносим полученное значение в таблицу? Или как?


--
Regards
Alexander Artamonov

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Как просуммировать часы?
    #32799393
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А если нужно ввести 6 ч. 53 мин.?
1) Для меня очевидно, что ни тип, ни формат времени для промежутка времени не подходят категорически. Как реализовать любую требуемую функциональность Вы похоже не хуже меня понимаете.
2) Усердие все превозмогает.
Иногда усердие превозмогает и рассудок.
(с) К.Прутков
:^)
...
Рейтинг: 0 / 0
Как просуммировать часы?
    #32799415
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если нужно вввести 1 месяц 3 недели и 2 дня?
Ну нет такого стандартного формата, ручками надо делать.
...
Рейтинг: 0 / 0
Как просуммировать часы?
    #32799424
Iskander68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все-таки время мыслится в часах и минутах, а не в десятичных дробях. И
оператор при вводе не должен переводить вручную 6 ч 05 мин в карренси. Я
просто думал, у Вас есть опробованный алгоритм по данному вопросу. Буде
необходимость, обязательно изобрету велосипед. :-)

--
Regards
Alexander Artamonov

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Как просуммировать часы?
    #32799451
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, алгоритма у меня нет.
Я думаю, что поле для ввода строки должно быть не свободным, а связанным, те надо добавить строковое поле в табличку. И если не удалось преобразовать его своим кодом в карренси, то ругаться. А если удалось, то преобразовывать карренси самому обратно и переписывать это поле. Тогда кажется будет работать как будто это стандартный формат.
...
Рейтинг: 0 / 0
Как просуммировать часы?
    #32803262
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharkНет, алгоритма у меня нет.
Я думаю, что поле для ввода строки должно быть не свободным, а связанным, те надо добавить строковое поле в табличку. И если не удалось преобразовать его своим кодом в карренси, то ругаться. А если удалось, то преобразовывать карренси самому обратно и переписывать это поле. Тогда кажется будет работать как будто это стандартный формат.

Нет сомнений - логика в рассуждениях Shark есть! С подобными преобразованиями я столкнулся при использовании географических координат. Поскольку такого типа не существует и, более того, его передают в разных форматах (в градусах и частях градусов, в градусах, минутах и частях минуты, в радусах, минутах, секундах и частях секунды, широта и долгота может присутствовать в буквах или выражаться положительным или отрицательным числом; кроме того широты, как известно изеряются до 90 град., а долготы до 180) то нет другого выхода, как хранить каждую координату в двух полях - численном (для поиска на картах) и стринговом (для показа и ввода на экране). Головной боли - более чем предостаточно!
необходимы функции для взаимного перевода форматов - из числового в стринговый и наоборот, не простой функции, проверяющей корректность введенной координаты и проч. Слава богу, что еще не приходится производить суммирования по координатам! Но приходится вычислять расстояния - и это тоже становится не очень просто.
Это все я привел для примера к тому, что предлагает Shark при работе с денежным форматом в применении к промежуткам времени. Я убежден, что в большинстве случаев (те когда промежутки времени не превышают 24 часа) все-же удобнее хранить их (промежутки времени) в формате даты. нет головной боли при вводе-выводе, а при арифметических действиях над ними необходимы просетйшие функции пеобразования в необходимый стринговый формат - и все! В общем-то и в случае промежутков времени больших чем 24 часа рассуждения - те же. Не должно быть проблем. А что касается точности вычислений, то их тоже можно регулировать не сложным образом, например, добавлением 0.5 секунды для вычислений с точностью до секунды.
...
Рейтинг: 0 / 0
Как просуммировать часы?
    #32803285
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rivkin Dmitry С подобными преобразованиями я столкнулся при использовании географических координат.... Головной боли - более чем предостаточно!
Знакомо:)
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как просуммировать часы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]