![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Спасибо большое!
Последний раз редактировалось EGKR, 24.02.2016 в 17:17. |
|
#2
|
||||
|
||||
|
Сама формула вычисления несложная. Нужно подключить модуль DateUtils и взять из него функцию MinutesBetween(НачДата,КонДата).
Вычесть из полученных минут льготные 15 минут. Получить часы разделив получившееся число на 60 и результат умножить на тариф часа. Тут есть один нюанс, количество минут не всегда ровно разделится на часы и что делать с остатком решайте сами. А вот вычисляемое поле в Дельфи делается не так. Если доберетесь до этого абзаца - продолжим. |
|
#3
|
|||
|
|||
|
Спасибо большое!
Последний раз редактировалось EGKR, 24.02.2016 в 17:17. |
|
#4
|
||||
|
||||
|
Да, в DBText2.Caption вы получите количество минут между этими двумя датами. Обычное деление предполагает нецилочисленный результат в финале, даже если делить без остатка. Потому надо использовать
Код:
DBText2.Caption:=FloatToStr(Result/60) Код:
DBText2.Caption:=IntToStr(Result div 60) |
|
#5
|
||||
|
||||
|
А что касается вычисляемого поля в Дельфи. То делается это так:
На форме у вас есть компонент Table. Для него запускаете Редактор полей и добавляете все поля, после чего добавляете в нем новое поле типа Currency (считать мы будем стоимость) и выставляем для него флаг Calculated и назовем это поле Price. У компонента Table есть событие OnCalcFields и в нем мы напишем такой вот код: Код:
procedure TForm1.ADOTable1CalcFields(DataSet: TDataSet); begin DataSet['Price'] := (MinutesBetween(DataSet['Time_stop'], DataSet['Time']) - 15) / 60 * 5; end; |
| Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
EGKR (24.02.2016)
| ||