Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 34
1
MS Access

Выборка значений в промежутке дат ADOQuery, TimeDataPicker, Delphi

12.05.2016, 21:57. Показов 1274. Ответов 9
Метки нет (Все метки)

Не получается выборка по заданному диапазону дат. Необходимо выводить записи с датами между TimeDataPicker1 и TimeDataPicker2, но почему-то выводит то только первое значение, то вообще все значения КРОМЕ этого промежутка.
Delphi
1
2
3
4
DataModule6.ADOQuery4.sql.text:='select * from Îöåíêè where Data between :P1  AND :P2';
DataModule6.ADOQuery4.Parameters[0].Value:=datetostr(DateTimePicker1.Date);
DataModule6.ADOQuery4.Parameters[1].Value:=datetostr(DateTimePicker2.Date);
DataModule6.ADOQuery4.Active:= true;
Не могу понять в чем ошибка. Помогите пожалуйста, буду очень благодарна.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2016, 21:57
Ответы с готовыми решениями:

Автоматическая выборка значений переменных из Excel в Delphi 7
Добрый день. Помогите пожалуйста найти ошибку. Нужно осуществить автоматическую выборку значений...

ADOQuery запрос по диапазону дат
Добрый день всем! столкнулся с такой "нерешаемой пока" проблемой знаю что подобная тема...

Фильтрация ADOQuery по диапазону дат
Здравствуйте. Помогите с фильтрациям есть ADOQuery подключенный к SQL Server 2008 поля data_time ...

Выборка в промежутке дат (по условию)
Не могу ни как составить выборку по условию промежутка дат. Даты храню в тайм штамп, но если даты...

9
3757 / 3201 / 845
Регистрация: 29.08.2013
Сообщений: 21,145
Записей в блоге: 2
12.05.2016, 22:08 2
а у вас в колонке только дата или дата и время?
0
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 34
12.05.2016, 22:16  [ТС] 3
Только дата.

Добавлено через 5 минут
Если делаю так:
Delphi
1
2
3
4
DataModule6.ADOQuery4.sql.text:='select * from Îöåíêè where Data between :P1  AND :P2';
DataModule6.ADOQuery4.Parameters[0].Value:=FormatDateTime('dd-mm-yyyy', DateTimePicker1.Date);
DataModule6.ADOQuery4.Parameters[1].Value:=FormatDateTime('dd-mm-yyyy', DateTimePicker2.Date);
DataModule6.ADOQuery4.Active:= true;
то выводить только числа которые находяться до первой даты (DateTimePicker1).
0
2310 / 1415 / 491
Регистрация: 29.05.2013
Сообщений: 6,184
12.05.2016, 22:31 4
Суслика видишь? Нет. А он есть.
Вы просто не видите время, а оно там имеется, поэтому если вы хотите сделать выборку за какой-то период, используя только дату, вам надо брать правую границу на сутки больше.
0
1073 / 986 / 340
Регистрация: 07.08.2012
Сообщений: 2,782
12.05.2016, 22:35 5
DateTimePicker хотим мы этого или не хотим в свойстве Date содержит и время. Время надо отбрасывать.
Delphi
1
2
DataModule6.ADOQuery4.Parameters[0].Value := DateOf(DateTimePicker1.Date);
DataModule6.ADOQuery4.Parameters[1].Value := DateOf(DateTimePicker2.Date);
Преобразовывать дату в строковое представление для присвоения параметру не надо.
Функция DateOf объявлена в модуле DateUtils;

Кстати, прав Пытливый: нужно увеличивать вторую дату периода.
Delphi
1
DataModule6.ADOQuery4.Parameters[1].Value := DateOf(IncDay(DateTimePicker2.Date))
1
3757 / 3201 / 845
Регистрация: 29.08.2013
Сообщений: 21,145
Записей в блоге: 2
12.05.2016, 22:41 6
можно не увеличивать, можно добавить ко второй дате 23:59:59
или в запросе преобразовывать в нужный формат
0
2310 / 1415 / 491
Регистрация: 29.05.2013
Сообщений: 6,184
12.05.2016, 23:27 7
Я уточнил, что увеличить на сутки надо, если использовать только дату, без времени.
0
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 34
13.05.2016, 09:50  [ТС] 8
Проблема в том, что у меня вообще не берет значения из диапазона. У меня выбираются все значения НЕ ВХОДЯЩИЕ в диапазон.
0
3757 / 3201 / 845
Регистрация: 29.08.2013
Сообщений: 21,145
Записей в блоге: 2
13.05.2016, 10:09 9
фантазии

напиши запрос без параметров, оттестируй его и вставляй в делфи
1
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 34
13.05.2016, 14:00  [ТС] 10
Спасибо всем огромное. Отдельное спасибо qwertehok, за совет оттестировать сам запрос, и Скандербег за функцию отброса времени. Это навело меня на путные мысли)) Вообщем прописала вот такой код:
Delphi
1
2
3
4
DataModule6.ADOQuery4.sql.text:='select * from Îöåíêè where Data between :P1  AND :P2';
DataModule6.ADOQuery4.Parameters[0].Value := DateOf(DateTimePicker2.Date);
DataModule6.ADOQuery4.Parameters[1].Value := DateOf(DateTimePicker3.Date);
DataModule6.ADOQuery4.Active:= true;
Все заработало прекрасно. ( может кому-то пригодиться)
Как говорят, слона то я и не приметил.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2016, 14:00

Выборка финальных значений в промежутке и нахождение несуществующих значений
всем привет! прошу помощи начинающему, есть 3 таблицы: две из них - с данными о товарах (на уровне...

Анализатор лога, выборка нужных значений в диапазоне дат
Доброго времени суток! Есть лог-файл с парой сотен тысяч строк следующего вида: ...

Запрос в промежутке дат
вообщем делаю такой запрос, ругается на "<=" или "=>". почему такая проблема? как правильно...

Фильтрация записей в промежутке дат.
Добрый день форумчане, столкнулся с такой проблемой. Имеется БД и вся информация из нее выводится...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.