|
|
|
Как просуммировать часы?
|
|||
|---|---|---|---|
|
#18+
>А вот как наиболее удобным образом его использовать в контексте часов и минут? Ну например так Function ФорматПромежуткаВремениДляКарренси(p1 As Currency) As String Dim i1 As Long i1 = Int(p1) ФорматПромежуткаВремениДляКарренси = _ Format(i1) & " ч. " & Format((p1 - i1) * 60) & " мин." End Function >Шарк, логика в применении денежного типа для выражения промежутка времени есть. Извините за занудство:^) не только для промежутков, но и для практически любых дробных чисел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 08:17:08 |
|
||
|
Как просуммировать часы?
|
|||
|---|---|---|---|
|
#18+
Shark>1,25+2,75 будет 3,9999999999 А у денежнего формата нет таких "фишек"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 09:55:20 |
|
||
|
Как просуммировать часы?
|
|||
|---|---|---|---|
|
#18+
Денежный формат это целое число, деленное на десять тыщ, так что там все пучком. A double это мантисса и еще чето не помню названия:^), и ессно арифметика там приблизительная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 10:16:43 |
|
||
|
Как просуммировать часы?
|
|||
|---|---|---|---|
|
#18+
Wow! А я, по-наивности, все денежные суммы в доубл зарядил :( Так; а если идет умножение доубл-числа на деньги результат как будет округляться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 10:22:04 |
|
||
|
Как просуммировать часы?
|
|||
|---|---|---|---|
|
#18+
Function fn2() Dim a1 As Double Dim a2 As Currency a1 = 1 a2 = 1 Debug.Print TypeName(a1 * a2) End Function Double ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 10:56:35 |
|
||
|
Как просуммировать часы?
|
|||
|---|---|---|---|
|
#18+
Аналогично, прошу прощения за занудство. Ну, функция перевода денег во время это понятно. Правда, ИМХО, Format() здесь лишнее - тем паче с одним аргументом. Амперсанд и так неявно преобразовывает в строку. К тому же минуты неплохо бы до целых округлить, типа, i1 & " ч. " & CInt((p1 - i1) * 60) & " мин." Но это все детали. А вот что дальше делать? Ну получим мы вычисляемое поле. Стало быть ввести в него данные нельзя - можно только посмотреть, чему соответстует 6,89. А если нужно ввести 6 ч. 53 мин.? Делать свободное поле для ввода строки, через другую функцию преобразовывать ее в карренси и по некоему событию вносим полученное значение в таблицу? Или как? -- Regards Alexander Artamonov Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 12:19:10 |
|
||
|
Как просуммировать часы?
|
|||
|---|---|---|---|
|
#18+
>А если нужно ввести 6 ч. 53 мин.? 1) Для меня очевидно, что ни тип, ни формат времени для промежутка времени не подходят категорически. Как реализовать любую требуемую функциональность Вы похоже не хуже меня понимаете. 2) Усердие все превозмогает. Иногда усердие превозмогает и рассудок. (с) К.Прутков :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 12:34:10 |
|
||
|
Как просуммировать часы?
|
|||
|---|---|---|---|
|
#18+
А если нужно вввести 1 месяц 3 недели и 2 дня? Ну нет такого стандартного формата, ручками надо делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 12:40:03 |
|
||
|
Как просуммировать часы?
|
|||
|---|---|---|---|
|
#18+
Все-таки время мыслится в часах и минутах, а не в десятичных дробях. И оператор при вводе не должен переводить вручную 6 ч 05 мин в карренси. Я просто думал, у Вас есть опробованный алгоритм по данному вопросу. Буде необходимость, обязательно изобрету велосипед. :-) -- Regards Alexander Artamonov Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 12:41:22 |
|
||
|
Как просуммировать часы?
|
|||
|---|---|---|---|
|
#18+
Нет, алгоритма у меня нет. Я думаю, что поле для ввода строки должно быть не свободным, а связанным, те надо добавить строковое поле в табличку. И если не удалось преобразовать его своим кодом в карренси, то ругаться. А если удалось, то преобразовывать карренси самому обратно и переписывать это поле. Тогда кажется будет работать как будто это стандартный формат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 12:50:30 |
|
||
|
Как просуммировать часы?
|
|||
|---|---|---|---|
|
#18+
SharkНет, алгоритма у меня нет. Я думаю, что поле для ввода строки должно быть не свободным, а связанным, те надо добавить строковое поле в табличку. И если не удалось преобразовать его своим кодом в карренси, то ругаться. А если удалось, то преобразовывать карренси самому обратно и переписывать это поле. Тогда кажется будет работать как будто это стандартный формат. Нет сомнений - логика в рассуждениях Shark есть! С подобными преобразованиями я столкнулся при использовании географических координат. Поскольку такого типа не существует и, более того, его передают в разных форматах (в градусах и частях градусов, в градусах, минутах и частях минуты, в радусах, минутах, секундах и частях секунды, широта и долгота может присутствовать в буквах или выражаться положительным или отрицательным числом; кроме того широты, как известно изеряются до 90 град., а долготы до 180) то нет другого выхода, как хранить каждую координату в двух полях - численном (для поиска на картах) и стринговом (для показа и ввода на экране). Головной боли - более чем предостаточно! необходимы функции для взаимного перевода форматов - из числового в стринговый и наоборот, не простой функции, проверяющей корректность введенной координаты и проч. Слава богу, что еще не приходится производить суммирования по координатам! Но приходится вычислять расстояния - и это тоже становится не очень просто. Это все я привел для примера к тому, что предлагает Shark при работе с денежным форматом в применении к промежуткам времени. Я убежден, что в большинстве случаев (те когда промежутки времени не превышают 24 часа) все-же удобнее хранить их (промежутки времени) в формате даты. нет головной боли при вводе-выводе, а при арифметических действиях над ними необходимы просетйшие функции пеобразования в необходимый стринговый формат - и все! В общем-то и в случае промежутков времени больших чем 24 часа рассуждения - те же. Не должно быть проблем. А что касается точности вычислений, то их тоже можно регулировать не сложным образом, например, добавлением 0.5 секунды для вычислений с точностью до секунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2004, 10:16:30 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32799393&tid=1670081]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 338ms |

| 0 / 0 |
