![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; ПС. просто пример разобрать его вполне просто. ![]() Далее в грид добавляем это поле: |