Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 17.03.2017
Сообщений: 25

Отобразить только те данные, которые соответствуют выбранной дате в datatimepicker

06.04.2017, 18:06. Показов 840. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. на форме имеется таблица заявок, отображается все отлично использовал (adoquery, datasourse, adoconnection,dbgrid)
нужно сделать чтобы при выборе даты в datatimepicker и нажатии кнопки "показать" отобразились только те данные которые соответствуют выбранной дате в datatimepicker.
пишу вот такой код:
Delphi
1
2
3
4
begin
dm.adoqsh.sql.text:='select * from shedule where date_application<= :P1';
dm.adoqsh.Parameters[0].Value := Dateof(DateTimePicker2.Date);
dm.adoqsh.Active:= true;
отображаются все данные меньше указанной даты в datatimepicker,

когда пишу так:
Delphi
1
2
3
4
begin
dm.adoqsh.sql.text:='select * from shedule where date_application = :P1';
dm.adoqsh.Parameters[0].Value := Dateof(DateTimePicker2.Date);
dm.adoqsh.Active:= true;
в таблице ничего не показывает.
подскажите в чем ошибка?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.04.2017, 18:06
Ответы с готовыми решениями:

Как выбрать данные из datagridView по выбранной дате datetimepicker?
Может быть кто-то знает как сделать выборку данных из datagrid по выбранной дате datetimepicker? В таблице есть несколько дат, так же...

Обработка только тех фотографий, которые соответствуют заданным требованиям
Возможно ли заставить Фотошоп скриптом пакетно выбирать и обрабатывать экшеном только те фото, в которых выполняется условие по той или...

Написать запрос, чтобы он выводил данные о покупках, выбранного клиента по выбранной дате
Как написать запрос, чтобы он выводил данные о покупках, выбранного клиента по выбранной дате(выбираются они в DBGrid) ?

12
17 / 17 / 5
Регистрация: 13.10.2015
Сообщений: 102
06.04.2017, 19:54
Возможная причина в формате поля Даты. Если формат полный, то за счет времени сравнения на равенство не будет.
Сам использую краткий формат даты.
С уважением
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
06.04.2017, 19:55
Цитата Сообщение от foxid Посмотреть сообщение
отображаются все данные меньше указанной даты в datatimepicker,
Запросы и остальное в коде выглядит без криминала.
Правда, автор не указал с каким типом БД у него идет работа (т.е. может ли быть в дате и время).
Потому как если в поле с датой таблицы заявок есть время, то равенство не сработает. Это одна из возможных причин.
Вторая возможная причина. Если дата в таблице "чистая" (время отсутствует) - нет строки с датой указанной в DateTimePicker.
0
0 / 0 / 0
Регистрация: 17.03.2017
Сообщений: 25
06.04.2017, 20:08  [ТС]
бд access, выставлено как краткий формат формат
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
06.04.2017, 20:16
Надо помнить о том, что "выставленный формат" в Акссесе никакого отношения к АДО в Дельфи не имеет.
В поле, тип которого в Акссессе называется "Дата/время", хранится полная дата вместе со временем.
Пусть даже время и будет 00:00:00, но оно будет.
Это обстоятельство и вносит замешательство в работу с датой (и временем), когда речь идет об Акссессе.
0
0 / 0 / 0
Регистрация: 17.03.2017
Сообщений: 25
06.04.2017, 20:18  [ТС]
все равно не понимаю где ошибка в коде
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
06.04.2017, 20:28
Ошибки в коде нет.
В запросе нужны более изощренные условия.
К примеру так, чтобы охватить начало и конец суток нужной даты.
Это обычно делают в два условия: первое - дата со временем начала суток, второе следующая дата тоже со временем начала суток.
0
0 / 0 / 0
Регистрация: 17.03.2017
Сообщений: 25
06.04.2017, 20:33  [ТС]
а можете, пожалуйста, подсказать как это условие написать. я не оч в этом понимаю
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
06.04.2017, 20:44
может быть так:
Delphi
1
2
3
4
5
dm.adoqsh.sql.text := 
  'select * from shedule where date_application >= :P1 and date_application <= :P2';
dm.adoqsh.Parameters[0].Value := Dateof(DateTimePicker2.Date);
dm.adoqsh.Parameters[1].Value := Dateof(IncDay(DateTimePicker2.Date));
dm.adoqsh.Open;
0
0 / 0 / 0
Регистрация: 17.03.2017
Сообщений: 25
06.04.2017, 20:51  [ТС]
Скандербег, о господи, оно сработало! спасибо огромное!!!
а не подскажите вот эта строчка что делает
Delphi
1
dm.adoqsh.Parameters[1].Value := Dateof(IncDay(DateTimePicker2.Date));
0
17 / 17 / 5
Регистрация: 13.10.2015
Сообщений: 102
06.04.2017, 20:56
Функция Dateof "Вырезает" значение времени из TDateTime (устанавливает значение времени в 0, что означает полночь),
а сравниваются строчные переменные.Этот 0 (ноль) "портит" строку.
Параметр в запросе имеет тип WideString поэтому вместо Dateof использую DateToStr(); и сравниваю на равенство.
С уважением
0
0 / 0 / 0
Регистрация: 17.03.2017
Сообщений: 25
06.04.2017, 21:01  [ТС]
Всем огромнейшее спасибо за предоставленные ответы))
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
06.04.2017, 21:21
Цитата Сообщение от foxid Посмотреть сообщение
а не подскажите вот эта строчка что делает
Очень просто.
Дата (если ее рассматривать как сутки), как ни крути, состоит из часов, минут, секунд и т.д.
К примеру, в базе записана дата, которая обозначает: 01.02.2017 09:05:00
Если попытаться сравнить эти данные с "чистой" (без времени) датой, то получим облом:
01.02.2017 09:05:00 <> 01.02.2017 00:00:00

Остается каким-то образом игнорировать время в дате.
Это делается как выше показано.
А именно: в условии устанавливаем первую дату в начало суток: 01.02.2017 00:00:00 (чем занимается функция DateOf).
Затем дату увеличиваем на день (функция IncDay) и её тоже устанавливаем в начало суток.
Получаем: 02.02.2017 00:00:00
Затем сравниваем дату из базы с периодом от 01.02.2017 00:00:00 до 02.02.2017 00:00:00.
И, если дата в базе будет равна 01.02.2017 09:05:00 или с любым другим временем, то она попадет в упомянутый период.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.04.2017, 21:21
Помогаю со студенческими работами здесь

Delphi 7 вывести в DBGrid только те записи, которые соответствуют условию, содержащемуся в StringGrid
Добрый вечер, уважаемые программисты! :curtsy: Имеется: результат выполнения процедуры, который выводится в StringGrid: А также...

Во втором DataGridView отобразить данные, используя значения выбранной строчки первого DataGridView
Доброго времени суток, Ув. Форумчане! Такой вопрос: Во во втором DataGridView отобразить данные используя значения выбранной строчки...

Delphi Query DataTimePicker (поиск по дате)
Всем добрый день. Возник вопрос - есть компонент DataTimePicker, написал запрос на выборку по дате: procedure...

Связанные таблицы. Отображать во второй DGV данные, которые относятся к выбранной записи в первой
Есть два datagridview. Если в datagridview1 в свойствах указать таблицу из связанной базы, а в datagridview2 связь этой таблицы с другой,...

Как в Excel отобразить только требуемые данные из книги?
Вопрос следующий: существует файл MS Visio. В файле присутствует некая графика, каждому графическому объекту данного файла соответствует...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru