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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.04.2008, 13:40
ChiToK ChiToK вне форума
Прохожий
 
Регистрация: 20.04.2008
Сообщения: 9
Репутация: 10
По умолчанию вычесления времени в dbgrid

Всем привет.Есть бд в акессе, ее присоединил и использовал Dbgrid чтоб она отображалась, есть 2 колонки с типом время\дата , нужно найти разницу во времени между этими колонками.В дельфи почему-то отображается дата и время , хотя в акссесе формат поставлен в виде времени, без даты. Как можно находить разницу во времени между 2 строками чтобы результат получался ввиде минут с типом integer?
Ответить с цитированием
  #2  
Старый 28.04.2008, 16:08
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,048
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от ChiToK
Всем привет.Есть бд в акессе, ее присоединил и использовал Dbgrid чтоб она отображалась, есть 2 колонки с типом время\дата , нужно найти разницу во времени между этими колонками.В дельфи почему-то отображается дата и время , хотя в акссесе формат поставлен в виде времени, без даты. Как можно находить разницу во времени между 2 строками чтобы результат получался ввиде минут с типом integer?

Дело в том, что Дельфи работает через тип TDateTime, в котором целая часть зарезервированна на дату, а дробная - на время. Соответсвенно, тебе надо привести целую часть к одинаковому значению (например, 0 , это если ты уверен, что временные отметки относяться к одному и тому же дню, но в резултате работы Дельфей там может стоять разная дата. Если все-таки там дата правильная, то ничего не надо делать.

Для вычисления раницы, между дыумя значениями в минутах можно вызвать функцию MinutesBetween(). Вернет как раз все, что тебе надо.
Не забудь про фокус с датой. а вообще, вызови хелп по этой функции и там можно щелкнуть на ссылку datetime routines и почитать о разных функциях.
Ответить с цитированием
  #3  
Старый 28.04.2008, 20:55
ChiToK ChiToK вне форума
Прохожий
 
Регистрация: 20.04.2008
Сообщения: 9
Репутация: 10
По умолчанию

спасибо ,я создал в adotable дполнительное вычесляемое поле , чтобы в него заносилась разница между 2 полями.написал следующий код:
adotable2raznica:=minutesbetween(adotable2n.asdate time,adotable2z.asdatetime);
он возвращает значение int64 , и оно не может заносится в dbgrid потому что там нельзя выбрать такой тип поля, как быть? нужны эти значения чтобы строить графики по ним.
Ответить с цитированием
  #4  
Старый 29.04.2008, 09:03
ChiToK ChiToK вне форума
Прохожий
 
Регистрация: 20.04.2008
Сообщения: 9
Репутация: 10
По умолчанию

вот и ответ

ADOTable2raznica.asinteger:=strtoint(inttostr(minu tesbetween(adotable2n.asdatetime,adotable2z.asdate time)));
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter