|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Разница между датами в днях
Здравствуйте!
Пишу БД которая будет контролировать работу библиотеки, прием-сдачу книг и т.д. Подскажите кто-нибудь пожалуйста, как мне посчитать разницу в днях между двумя датами. forma.jpg Нужно что бы высчитывала должников, т.е. посчитала разницу между датой выдачи книги и датой сдачи и если разница больше чем в 31 день то выдавала информацию о задолженности. |
#2
|
||||
|
||||
type TDateTime = type Double;
целая часть = кол-во дней от 12/30/1899 т.е. разница между двумя этими "типами" и есть кол-во дней |
#3
|
|||
|
|||
Trunc(Date_1) - Trunc(Date_2) - показывает разницу между датами в днях, использовал в своей программе для сравнения такой метод
|
#4
|
||||
|
||||
Код:
uses DateUtils; Код:
function DaysBetween(const ANow, AThen: TDateTime): Integer; |
#5
|
|||
|
|||
Спасибо за советы, но ничего не получается
Как мне воспользоваться функцией Trunc? У меня таблица называется TOperation поля расчета 'DataReturn' и 'DataDelivery', выводить значение должен в третье поле 'Debtor', как это должно выглядеть в программе? |
#6
|
|||
|
|||
Цитата:
|
#7
|
|||
|
|||
База на чем?
Доступ к базе через что? |
#8
|
||||
|
||||
Nepomnu Попробуй так.
Код:
procedure TForm1.Button1Click(Sender: TObject); var myYear, myMonth, myDay : Word; myHour, myMin, mySec, myMilli : Word; myYear_, myMonth_, myDay_ : Word; myHour_, myMin_, mySec_, myMilli_ : Word; Raznica:word; begin try DecodeDateTime(DataDelivery {значение поля},myYear, myMonth, myDay, myHour, myMin, mySec, myMilli); DecodeDateTime(DataReturn {значение поля} ,myYear_, myMonth_, myDay_, myHour_, myMin_, mySec_, myMilli_); //Если один месяц //предположительно что год тоже один и тот же if myMonth=myMonth_ then Raznica:= myDay_-myDay; //разница в днях //Ну думаю для разных месяцев сам допишешь Except MessageDlg('Ошибка.',mtError,[mbOK],0); end; end; Последний раз редактировалось Admin, 31.05.2010 в 18:02. |
#9
|
|||
|
|||
Создаем calc поле в компоненте table
в свойстве вычесления калс поля пишем что то типа этого: Код:
procedure TForm1.BitBtn1Click(Sender: TObject); var i:real; begin i:=(DateTimePicker2.Date-DateTimePicker1.Date); if (round(i)>31) then label1.Caption:='Просроченно' else label1.Caption:='Ok' end; ПС. просто пример разобрать его вполне просто. Далее в грид добавляем это поле: |