Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2009, 21:58   #1
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию Разница между двумя datetimepicker

У меня есть 2 компонента DateTimePicker, как мне получить число целых дней между двумя разными датами
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 24.09.2009, 22:11   #2
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Функция DaysBetween

Код:
uses DateUtils;
var
  fromdate, toDate : TDateTime;

begin
  // Установка наших переменных дат
  fromDate := EncodeDateTime(2000, 02, 26, 10, 0, 0, 0);
  toDate   := EncodeDateTime(2000, 02, 29,  9, 0, 0, 0);

  // Отображение этих дат и дней между ними
  ShowMessage('С даты = '+DateTimeToStr(fromDate));
  ShowMessage('До даты = '+DateTimeToStr(toDate));
  ShowMessage('Целых дней = '+
              IntToStr(DaysBetween(toDate, fromDate))+' дней');
end;
Результат будет:
С даты = 26/02/2000 10:00:00
До даты = 29/02/2000 09:00:00
Целых дней = 2 дней


Взято с delphibasic.ru
W0LF вне форума Ответить с цитированием
Старый 24.09.2009, 22:45   #3
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Вот код но чет я не понимаю как сделать

Код:
procedure TFD_SL.BitBtn1Click(Sender: TObject);
function Del(Str: String): String;
  begin
     while Pos(' ', Str) > 0 do
        Delete(Str, Pos(' ', Str), 1);
     Result := Str;
  end;
var
idml:integer;
begin
if (Del(DBLCB1.Text)=('ЦПТП'))or (Del(DBLCB1.Text)=('цптп')) or (Del(DBLCB1.Text)=('ЦПЗ')) or (Del(DBLCB1.Text)=('цпз'))or (Del(DBLCB1.Text)=('ПТЦ'))or (Del(DBLCB1.Text)=('птц'))then
  begin
    slp:=0;
    fd_sl.Label4.Visible:=false;
    fd_sl.ListBox1.Visible:=false;
  end
  else
if (Del(DBLCB1.Text)<>('ЦПТП'))or (Del(DBLCB1.Text)<>('цптп')) or (Del(DBLCB1.Text)<>('ЦПЗ')) or (Del(DBLCB1.Text)<>('цпз'))or (Del(DBLCB1.Text)<>('ПТЦ'))or (Del(DBLCB1.Text)<>('птц'))then
  begin
  fd_sl.Label4.Visible:=true;
  fd_sl.ListBox1.Visible:=true;
  end;
    idml:=DBLCB1.KeyValue;
    DM.ADOQ_SL.Close;
    DM.ADOQ_SL.SQL.Clear;
    DM.ADOQ_SL.SQL.Text:='INSERT INTO stacionarnoe_lechenie (nachalo_dati_lecheniya,konec_dati_lecheniya,id_pacienta,id_mesta_lecheniya,stacionarnoe_lechenie,dop_info) VALUES (:ndl,:kdl,:idp,:idml,:slp,:di)';
    DM.ADOQ_SL.Parameters.ParamByName('ndl').Value:= FormatDateTime('yyyy-mm-dd', datetimepicker1.Date);
    DM.ADOQ_SL.Parameters.ParamByName('kdl').Value:= FormatDateTime('yyyy-mm-dd', datetimepicker2.Date); // 2 даты между кот. надо найти разницу
    DM.ADOQ_SL.Parameters.ParamByName('idp').Value:=DM.ADOQ_PACid_pacienta.Value;
    Dm.ADOQ_SL.Parameters.ParamByName('slp').Value:=slp;
    DM.ADOQ_SL.Parameters.ParamByName('idml').Value:=idml;
    DM.ADOQ_SL.Parameters.ParamByName('di').Value:=fd_sl.Memo1.Text;
    DM.ADOQ_SL.ExecSQL;

    dm.ADOQ_SL.Close;
    dm.ADOQ_SL.SQL.Clear;
    DM.ADOQ_SL.SQL.Add('SELECT * FROM stacionarnoe_lechenie sl LEFT OUTER JOIN pacient pt ON sl.id_pacienta=pt.id_pacienta INNER JOIN mesto_lecheniya_cptp mlc ON mlc.id_mesta_lecheniya=sl.id_mesta_lecheniya WHERE sl.id_pacienta=:idp');
    DM.ADOQ_SL.Parameters.ParamByName('idp').Value:=dm.ADOQ_PACid_pacienta.Value;
    DM.ADOQ_SL.Open;
end;
1 старый программист, лучше новых 2-х

Последний раз редактировалось Droid; 24.09.2009 в 23:13.
Droid вне форума Ответить с цитированием
Старый 24.09.2009, 23:20   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

не совсем понял, при чём здесь запрос...

разница между двумя датами находится очень просто:
Код:
trunc(DateTimePicker1.Date) - trunc(DateTimePicker2.Date)

основание, цитирую из хелпа на TDateTime
Цитата:
type TDateTime = type Double;

Description

Most VCL objects represent date and time values using the TDateTime type. The integral part of a TDateTime value is the number of days that have passed since 12/30/1899. The fractional part of a TDateTime value is fraction of a 24 hour day that has elapsed.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разница между временем asd48 Microsoft Office Excel 1 05.06.2009 23:44
Разница между двумя Bitmap Seqular Общие вопросы .NET 2 25.04.2009 17:31
Разница между датами kykysya Общие вопросы Delphi 8 26.03.2009 18:22
Какая разница между MS Visual и C++ Fanta_Clour Софт 2 09.03.2008 18:33
Разница между датами deenka БД в Delphi 3 31.01.2008 13:21