Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 160

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
мне нужно выбрать диапазон дат и произвести фильтрацию,
вот что у меня есть:
DataModule3.ADOTable1.filter:='Dates>='+DateToStr(DateTimePicker1.Date)+' and Dates<='+DateToStr(DateTimePicker4.Date);
DataModule3.ADOTable1.filtered:=true;
суть вопроса заключается в том что, при фильтрации дат, конечную дату которуя я выбрал он не включает в дисапазон, может здесь ' and Dates<=' что не правильно? подскажите пож-та

strannik23 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: strannik23 (статус: Посетитель)
Вопрос отправлен: 6 апреля 2011, 13:24
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Здравствуйте, strannik23!

Цитата (strannik23):

и как же я их добавлю? (сутки)

Да хоть вот так:
DataModule3.ADOTable1.filter:='Dates>='+DateToStr(DateTimePicker1.Date)+' and Dates<='+DateToStr(DateTimePicker4.Date +
1.0); // +1 сутки 
DataModule3.ADOTable1.filtered:=true;

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 6 апреля 2011, 14:33
Оценка за ответ: 5

Комментарий к оценке: спасибо, помгло, всё правильно

Мини-форум вопроса

Всего сообщений: 12; последнее сообщение — 7 апреля 2011, 06:07; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 6 апреля 2011, 13:27 [#1]:

А может тупо добавить сутки к конечной дате и не париться?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
strannik23

strannik23 (статус: Посетитель), 6 апреля 2011, 13:31 [#2]:

и как же я их добавлю? (сутки)
strannik23

strannik23 (статус: Посетитель), 6 апреля 2011, 14:41 [#3]:

спасибо большое, всё именно так как вы и написали
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 6 апреля 2011, 20:05 [#4]:

Попробуйте установить значение свойства time у DateTimePicker в 0.
min@y™

min@y™ (статус: Доктор наук), 6 апреля 2011, 20:10 [#5]:

Цитата (Мережников Андрей):

Попробуйте установить значение свойства time у DateTimePicker в 0.

Интересно, а нафига?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 6 апреля 2011, 20:24 [#6]:

Цитата (min@y™):

Интересно, а нафига?

Мне тоже интересно было бы узнать у разработчиков Delphi почему при использовании свойства Date играет роль значение свойства Time :-)
Просто была подобная ситуация, долго ломал голову над решением, помогло именно это - установить в 0 значение time.
min@y™

min@y™ (статус: Доктор наук), 6 апреля 2011, 20:32 [#7]:

Цитата (Мережников Андрей):

Мне тоже интересно было бы узнать у разработчиков Delphi почему при использовании свойства Date играет роль значение свойства Time

Ну прально, потому что TDateTime - это условно TDate + TTime. Но в данном случае эффект обратный, не знаю почему.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 6 апреля 2011, 20:51 [#8]:

Цитата (min@y™):

Ну прально, потому что TDateTime - это условно TDate + TTime.

Ну так там есть отдельное свойство DateTime, зачем они приплели time еще и в Date - не понятно.
В смысле, используя TDateTimePicker.Date надо иметь в виду, что в действительности будет использовано значение: TDateTimePicker.Date+TDateTimePicker.Time.
Поэтому и надо обнулять свойство time, если хочешь использовать только дату.
min@y™

min@y™ (статус: Доктор наук), 6 апреля 2011, 21:01 [#9]:

Ну дык в вопросе-то используется DateToStr().
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 6 апреля 2011, 21:19 [#10]:

значит в БД поле Dates типа DateTime и там дата и время вместе, наверное значение пишется из DateTimePicker. В этом вся ерунда с фильтром. Да, скорее всего так, поэтому и не входит последняя дата диапазона.
min@y™

min@y™ (статус: Доктор наук), 6 апреля 2011, 21:24 [#11]:

Цитата (Мережников Андрей):

значит в БД поле Dates типа DateTime и там дата и время вместе, наверное значение пишется из DateTimePicker. В этом вся ерунда с фильтром. Да, скорее всего так, поэтому и не входит последняя дата диапазона.

Да, я тоже об этом подумал. Но, тем не менее, мой ответ подошёл. Решили проблему с чёрного хода. :)
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 7 апреля 2011, 06:07 [#12]:

Цитата (min@y™):

Решили проблему с чёрного хода

Лучше тогда заменить условие <= на <, чтобы не попали лишние записи.

8 апреля 2011, 11:58: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:55
Выполнено за 0.03 сек.