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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2012, 18:14   #1
diekster
Пользователь
 
Регистрация: 03.02.2012
Сообщений: 23
По умолчанию Работа с датой(непонятки)

Всем доброго вечера. Экстренно прошу подтолкнуть на ясную мысль.
И так по порядку имеется типизированный файл типа :

Код HTML:
otchet=record
    id:0..5;
    name:string[7];
    date:Tdate;
    time:Ttime;
    pribyl:real;
    rashod:real;
  end;
 
var
  tipo:file of otchet;
  po:otchet;

На форме расположен Stringgrid,и два DateTimePicker. В первом DateTimePicker'e выбераем с какой даты нужно подсчитывать прибыль от продаж , во Втором соответственно по какую, сумму вывести в таблицу.
Не получается сделать диапазон сравнения. например, первая продажа была 7 декабря выбираю даты с 7.12.12 по 7.12.12 у меня ничего не подсчитывает. Но стоит выбрать в первом DateTimePicker'e дату 6 подсчитывает продажи за 7 число. Подскажите как сделать так что бы считалось включительно?? Очень срочно.

кусок кода как я делал :


Код HTML:
fordate:=datetimepicker1.Date;
todate:=datetimepicker2.Date;
rashod:=0;
pribyl:=0;
i:=0;
while (not(eof(tipo))) do
begin
seek(tipo,i);
read(tipo,po);
i:=i+1;
if po.id=0 then
  if (fordate<=po.date)and(todate=>po.date)then
  begin
    rashod:=rash80+po.rashod;
    pribyl:=pribyl+po.pribyl;
  end;
end;
 
Cells[2,1]:=floattostrf(rashod,fffixed,5,2);
Cells[3,1]:=floattostrf(pribod,fffixed,5,2);
diekster вне форума Ответить с цитированием
Старый 11.12.2012, 18:19   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Есть подозрение, что "fordate" и "todate" содержат в себе помимо даты еще и информацию о времени. Проверьте в отладчике, не так ли это?
Если так, то необходимо оттуда только дату выцепить перед сравнением
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 11.12.2012, 18:49   #3
diekster
Пользователь
 
Регистрация: 03.02.2012
Сообщений: 23
По умолчанию


Вот что показал обработчик
diekster вне форума Ответить с цитированием
Старый 11.12.2012, 19:58   #4
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Дробная часть - это и есть время. Его необходимо отбросить, после этого ваша программа должна сменить поведение на более адекватное
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 11.12.2012, 20:28   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Luuzuk, +1

diekster,
достаточно вместо:
fordate:=datetimepicker1.Date;
todate:=datetimepicker2.Date;

написать:
Код:
fordate:= Trunc( datetimepicker1.Date );
todate:= Trunc( datetimepicker2.Date);
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с датой _Valery_ Microsoft Office Access 2 03.02.2012 17:08
работа с датой FullmetalAlchemist Microsoft Office Excel 4 25.05.2010 14:42
работа с датой Sack Microsoft Office Access 2 23.09.2008 09:56
Работа с датой Dunpeal Общие вопросы Delphi 5 15.05.2008 12:05
Работа с датой [RR]Reaction Общие вопросы Delphi 3 07.04.2008 21:52