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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.08.2009, 11:01
Kara1989 Kara1989 вне форума
Прохожий
 
Регистрация: 05.06.2009
Сообщения: 12
Репутация: 10
По умолчанию суммирование дат :)

Народ нужна помощь!!

У меня на форме есть DBGridEh1 (в нем есть два столбца - дата/время), Еdit1, Edit2, DateTimePicker1 и DateTimePicker2
написал такую функцию, которая вычисляет разницу двух дат:
Код:
function DataBetween(First,Second: TDateTime): string;
var Y1,Y2,D1,D2,M1,M2,y,m,d: word;
begin
Result:= '';
if First>Second then exit;
y1:=YearOf(First);
y2:=YearOf(Second);
m1:=MonthOf(First);
m2:=MonthOf(Second);
d1:=DayOf(First);
d2:=DayOf(Second);
if d1<=d2 then d:=d2-d1
else begin
d2:=DaysInAMonth(y2,m2)+d2;
m2:=m2-1;
d:=d2-d1;
end;
if m1<=m2 then m:=m2-m1
else begin
m2:=m2+12;
y2:=y2-1;
m:=m2-m1;
end;
y:=y2-y1;
Result:= format('%d год %d месяц %d день',[y,m,d]);
if y=0 then Result:=format('%d месяц %d день',[m,d]);
if m=0 then Result:=format('%d месяц %d день',[y,d]);
if (y=0) and (m=0) then Result:=format('%d день',[d]);
end;

Через обработчика OnClick кнопки Button1 результат вставляю в Edit1. Вот такая команда:

procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
For i:=0 to Form1.adotable1.RecordCount do begin
If Form1.ADOTable1.FieldByName('aaa').AsBoolean = true then
begin
Form1.DateTimePicker2.Date:=Form1.ADOTable1.FieldByName('ayaktau_kuni').AsDateTime;
Form1.DateTimePicker1.Date:=Form1.ADOTable1.FieldByName('bastau_kuni').AsDateTime;
Form1.Edit1.Text:=DataBetween(Form1.datetimepicker2.date,Form1.datetimepicker1.date);
end;
end;
end;
Admin: Пользуемся тегами!

Теперь мне надо сделать так, чтобы результаты между собой суммировались, это зависит от того, сколько у DBGridEh строк
надо поставить результат в Edit2

Например: 1 год 11 месяцев 25 дней (Edit1) + 2 года 5 месяцев 12 дней (Edit2) = 4 года 5 месяцев 6 дней (Edit2)

Заранее буду благодарен!!!

Последний раз редактировалось Admin, 14.08.2009 в 11:05.
Ответить с цитированием
  #2  
Старый 14.08.2009, 11:35
NT_AUTHORITY NT_AUTHORITY вне форума
Прохожий
 
Регистрация: 06.08.2009
Сообщения: 34
Репутация: 10
По умолчанию

Во-первых, для вычисления разницы дат можно использовать DaysBetween. Во-вторых, насчёт суммы. При сложении даты с некоторым количеством дней можно использовать функцию IncDay. Но наверняка это ещё не всё. Если порыться в функциях модуля DateUtils то можно найти что-нибудь ещё. Не забудь подключить модуль DateUtils.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter