Topic: Преобразование даты

Здравствуйте, уважаемые разработчики!

Пытаюсь сделать программу для кадровиков. По задумке программа должна уметь рассчитать стаж на текущую дату и заданную вручную дату. Вторая функция - напоминание о наступлении нового стажевого периода. Проблема в том, что кадровики работают с датами в формате Год, Месяц, День. То есть происходит сложение двух дат и преобразование в цифры. Например Иванов И.И. проработал учителем ИЗО 5 лет, 6 месяцев, 7 дней. В Excel такое делается функцией РАЗНДАТ. Но нет напоминаний.

Скажите, возможно ли в MyVisualDatabase реализовать следующие вещи:

1) Сложение нескольких дат в формате дд.мм.гггг и преобразование в вид ХХ лет, ХХ месяцев, ХХ дней?
2) При достижении определенной даты в стаже учителя (счетчик приближается к определенной цифре) - например если наступило 10 лет стажа - при запуске программы появляется окно с предупреждением об этом?

Re: Преобразование даты

Приветствую.


1. Не совсем понял относительно сложения дат, складываются даты или стаж?
В базе данных как я понимаю храняться только периоды дат, в которых человек работал?


Получить разницу между датами в годах, месяцах и днях можно так

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
    TD1,TD2:TDateTime;
    M,Y,D:Integer;
    Year, Month, Day, Year2, Month2, Day2: Word;
begin
    TD1:=Trunc(Form1.DateTimePicker1.Date);
    TD2:=Trunc(Form1.DateTimePicker2.Date);
    Decodedate(TD1,Year, Month, Day );
    Decodedate(TD2,Year2, Month2, Day2 );
    Y:=Year2-Year;
    M:=Month2-Month;

    if Month2<Month then
    begin
        dec(Y);
        M:=(Month2+12)-Month
    end else M:=Month2-Month;

    if Day2<Day then begin dec(M);
    D:=(Day2+30)-Day end else D:=Day2-Day;

    ShowMessage( IntToStr(Y)+' лет '+IntToStr(M)+' месяцев '+ IntToStr(D)+' дней' );
end;


2. Можно, но сначало нужно разобраться с первым вопросом.

Dmitry.