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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2016, 16:19   #1
Droz
 
Регистрация: 04.04.2016
Сообщений: 4
По умолчанию Delphi. Фильтрация по диапазону дат.

Здравствуйте! Нужно по диапазону дат сделать фильтрацию данных, прописала так
Код:
ADOQuery1.SQL.Add('select * From test WHERE name_az LIKE '''+ComboBox1.text+''' and name_test LIKE '''+ComboBox2.text+''' and dt  BETWEEN :data1 and :data2');
ADOQuery1.Parameters.ParamByName('data1').Value:=DateTimePicker1.DateTime;
ADOQuery1.Parameters.ParamByName('data2').Value:=DateTimePicker2.DateTime;
Но не выводится последнее число,т.е.если выбрать 7.03.2016-10.03.2016,то даты за 7 число не будет.
И так тоже не выходит:
Код:
ADOQuery1.SQL.Add('SELECT * FROM test WHERE name_az LIKE '''+ComboBox1.text+''' and name_test LIKE '''+ComboBox2.text+''' and (dt>=:data1) and (dt<=:data2)');
Как исправить эту проблему?
Droz вне форума Ответить с цитированием
Старый 08.04.2016, 16:28   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Но не выводится последнее число,т.е.если выбрать 7.03.2016-10.03.2016,то даты за 7 число не будет.
Вы хотели сказать - за 10-е?...


Эта проблема известная. Дело в том, что у Вас, по всей видимости, в БД хранится не просто дата, а дата вместе со временной частью (часы,минуты и т.д.)

попробуйте так:

Код:
uses DateUtils;

....

var
  dt1, dt2 : TDateTime;
.....

ADOQuery1.SQL.Add('SELECT * FROM test WHERE name_az LIKE '''+ComboBox1.text+''' and name_test LIKE '''+ComboBox2.text+''' and (dt>=:data1) and (dt<:data2)');

dt1:=Trunc(DateTimePicker1.DateTime);
dt2:=Trunc(DateTimePicker2.DateTime);
ADOQuery1.Parameters.ParamByName('data1').Value:=dt1;
ADOQuery1.Parameters.ParamByName('data2').Value:=Inc(dt2,1);

Последний раз редактировалось Serge_Bliznykov; 08.04.2016 в 16:32.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.04.2016, 16:37   #3
Droz
 
Регистрация: 04.04.2016
Сообщений: 4
По умолчанию

Цитата:
Вы хотели сказать - за 10-е?...
Будет за 8,9,10. А нужно за 7,8,9,10.
Цитата:
Эта проблема известная. Дело в том, что у Вас, по всей видимости, в БД хранится не просто дата, а дата вместе со временной частью (часы,минуты и т.д.)
БД сделана в аксесе, и там указан краткий формат даты,и прописана маска,т.е. уверена,что временная часть отсутствует.
Droz вне форума Ответить с цитированием
Старый 08.04.2016, 16:44   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

попробуйте код, предложенный мной выше.
расскажите, что получилось
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.04.2016, 16:54   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

формат даты это формат ВЫВОДА (показа и только показа) но не ХРАНЕНИЯ ( и значит сравнений).
А тип данных это формат ХРАНЕНИЯ и он к сожалению только дата-время. (смотри рис.)
Изображения
Тип файла: jpg 3.JPG (46.0 Кб, 44 просмотров)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 08.04.2016 в 17:00.
evg_m вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод данных в DBGrid по диапазону дат martofpain БД в Delphi 2 24.03.2016 08:52
вывод строк по диапазону дат Pamhunt Microsoft Office Excel 4 20.06.2014 18:50
Поиск по диапазону дат в dbgrideh spotip Общие вопросы Delphi 17 07.05.2014 16:31
выборка из таблицы по диапазону дат strannick Microsoft Office Excel 4 12.12.2011 17:18
Количество дней в месяце по диапазону дат VadimSh Microsoft Office Excel 6 26.11.2008 23:48