Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.02.2016, 18:01
EGKR EGKR вне форума
Прохожий
 
Регистрация: 23.02.2016
Сообщения: 2
Версия Delphi: 7
Репутация: 10
По умолчанию Модель автостоянки. DBGrid, разность между датой/временем

Спасибо большое!

Последний раз редактировалось EGKR, 24.02.2016 в 17:17.
Ответить с цитированием
  #2  
Старый 23.02.2016, 20:08
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Сама формула вычисления несложная. Нужно подключить модуль DateUtils и взять из него функцию MinutesBetween(НачДата,КонДата).
Вычесть из полученных минут льготные 15 минут. Получить часы разделив получившееся число на 60 и результат умножить на тариф часа. Тут есть один нюанс, количество минут не всегда ровно разделится на часы и что делать с остатком решайте сами.

А вот вычисляемое поле в Дельфи делается не так. Если доберетесь до этого абзаца - продолжим.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 24.02.2016, 05:31
EGKR EGKR вне форума
Прохожий
 
Регистрация: 23.02.2016
Сообщения: 2
Версия Delphi: 7
Репутация: 10
По умолчанию

Спасибо большое!

Последний раз редактировалось EGKR, 24.02.2016 в 17:17.
Ответить с цитированием
  #4  
Старый 24.02.2016, 12:26
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Да, в DBText2.Caption вы получите количество минут между этими двумя датами. Обычное деление предполагает нецилочисленный результат в финале, даже если делить без остатка. Потому надо использовать
Код:
DBText2.Caption:=FloatToStr(Result/60)
Если же хотите считать только полные часы, без учета остатка минут, то можно сделать так:
Код:
DBText2.Caption:=IntToStr(Result div 60)
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 24.02.2016, 12:55
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А что касается вычисляемого поля в Дельфи. То делается это так:
На форме у вас есть компонент Table. Для него запускаете Редактор полей и добавляете все поля, после чего добавляете в нем новое поле типа Currency (считать мы будем стоимость) и выставляем для него флаг Calculated и назовем это поле Price. У компонента Table есть событие OnCalcFields и в нем мы напишем такой вот код:
Код:
 procedure TForm1.ADOTable1CalcFields(DataSet: TDataSet);
begin
 DataSet['Price'] := (MinutesBetween(DataSet['Time_stop'], DataSet['Time']) - 15) / 60 * 5;
end;
Теперь если запустить приложение, вы получите автоматом рассчитанную стоимость стоянки с учетом льготных 15 минут и цене за час 5 руб.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
EGKR (24.02.2016)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:59.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter