3 / 3 / 0
Регистрация: 30.03.2010
Сообщений: 60
1

Фильтрация: вывести в DbGrid только данные с подходящими датами (интервал задается через Datetimepicker-ы)

30.03.2010, 20:39. Показов 6933. Ответов 23
Метки нет (Все метки)

Здравствуйте!!помогите сделать фильтрацию.
на форме расположены 2 компонента Datetimepicker,Query,DataSource,Table,DBGrid
Нужно чтобы в DBGrid отображались только те записи, которые входят в диапазон между 2 Datetimepicker. Фильтрация только по 1 полю бд.
Напишите плиз хоть кусочек кода!!!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2010, 20:39
Ответы с готовыми решениями:

Фильтрация даних DBGrid и DateTimePicker
Вопрос. Как сделать фильтрацию данных в Гриде. Есть колонка Дата куда прописываем дату. И...

DBGrid, MaskEdit. Фильтрация по нескольким полям с датами и сброс фильтрации
procedure TForm2.Button9Click(Sender: TObject); begin if (trim(MaskEdit1.Text)='') and...

Фильтрация данных через два DateTimePicker
Есть две таблицы del] вывести информацию обо всех маршрутах самолетов данного типа в указанный...

Вывод в DBGrid через ADOQuery значения с DateTimePicker
Здравствуйте) Мне нужно записать в ячейку DBGrid дату с DateTimePicker, я делаю это так: ...

23
Супер-модератор
8766 / 2501 / 142
Регистрация: 07.03.2007
Сообщений: 11,854
30.03.2010, 22:20 2
https://www.cyberforum.ru/delp... 96596.html

https://www.cyberforum.ru/delp... 18020.html

ну или запросом sql...
0
15 / 15 / 1
Регистрация: 30.03.2010
Сообщений: 47
30.03.2010, 22:31 3
Текст запроса в компоненте Query:
SQL
1
2
3
4
5
6
SELECT
  blah_blah
FROM
  yada_yada yy
WHERE
  yy.Date BETWEEN :BeginDate AND :EndDate
В коде программы:
Delphi
1
2
Query.Parameters[0].Value:= Datetimepicker1.Date;
Query.Parameters[1].Value:= Datetimepicker2.Date;
0
3 / 3 / 0
Регистрация: 30.03.2010
Сообщений: 60
31.03.2010, 12:34  [ТС] 4
я сделала вот так только вот теперь ошибку выдает
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.BitBtn1Click(Sender: TObject);
var filtr:string;
begin
ADOTable1.filtered:=false;
filtr:='';
  filtr:= 'DATA between '+  #39 + DateTimePicker1.date + #39 + 'and' + DateTimePicker2.date+ #39 ;
 
adoTable1.Filtered:=true;
end;
0
Супер-модератор
8766 / 2501 / 142
Регистрация: 07.03.2007
Сообщений: 11,854
31.03.2010, 12:44 5
Лисёныш, а если так:
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.BitBtn1Click(Sender: TObject);
var filtr:string;
begin
ADOTable1.filtered:=false;
ADOTable1.filter:= 'DATA between '+  #39 + DateToStr(DateTimePicker1.date) + #39 + ' and ' + DateToStr(DateTimePicker2.date)+ #39 ;
 
adoTable1.Filtered:=true;
end;
1
15 / 15 / 1
Регистрация: 30.03.2010
Сообщений: 47
31.03.2010, 12:49 6
Нууу... Во-первых, одинарная ковычка в паскалевской строке может быть представлена двумя одинарными ковычками:
Delphi
1
'DATA between ''' + DateTimePicker1.date
Во-вторых, в SQL дату в ковычки пихать надо не везде, формат разный бывает, от СУБД зависит.
В-третьих, DateTimePicker1.date - это не строковый тип, очевидно, что при попытке его добавить к строковой переменной будет ошибка. Используйте DateToStr() если надо добавить дату к строке.
1
Супер-модератор
8766 / 2501 / 142
Регистрация: 07.03.2007
Сообщений: 11,854
31.03.2010, 12:54 7
THTP, а так ИМХо удобнее:
Delphi
1
'DATA between ' + #39 + DateTimePicker1.date + #39
0
57 / 57 / 10
Регистрация: 27.02.2010
Сообщений: 282
31.03.2010, 21:34 8
Извините, но Вы хоть форум то просматривайте, буквально пару дней назад разжевывал данный вопрос
Datetimepicker
посмотрите тами все расписано
0
3 / 3 / 0
Регистрация: 30.03.2010
Сообщений: 60
01.04.2010, 08:21  [ТС] 9
Добавлено через 15 минут
да я уж все пролазила!!!сделала все в точности, но все равно отказывается работать
Ошибки никакие не выводит только вот не отфильтровывает диапазон который нужен
0
15 / 15 / 1
Регистрация: 30.03.2010
Сообщений: 47
01.04.2010, 08:35 10
Дату в строку перевили? Покажите что сейчас в коде, подскажем что исправить.
0
3 / 3 / 0
Регистрация: 30.03.2010
Сообщений: 60
01.04.2010, 08:43  [ТС] 11
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.BitBtn1Click(Sender: TObject);
var
 dateNach, dateKon:TDate;
begin
    with ADOQuery1 do
     begin
        Close;
        active:=false;
       SQL.Clear;
        SQL.Add('Select * from smo1 ');
       SQL.Add('Where Data between :DateNach -1 and :DateKon');
       Parameters.ParamByName('DateNach').DataType:= ftDateTime;
      Parameters. ParamByName('DateKon').DataType:= ftDateTime;
      Parameters.  ParamByName('DateNach').Value:= DateTimePicker1.Date;
     Parameters.   ParamByName('DateKon').Value:= DateTimePicker2.Date;
        Open;
        active:=true;
        if RecordCount = 0 then ShowMessage('Çàïèñåé çà äàííûé ïåðèîä íåò!!!');
end;
end;
0
15 / 15 / 1
Регистрация: 30.03.2010
Сообщений: 47
01.04.2010, 08:51 12
Ну, как уже говорилось, between разными субдшкамипонимается по-разному. Где-то включаются границы диапозона, где-то нет, где-то включается только одна из них. Есть еще вероятность, что Ваша субд не понимает что такое "отнять от даты единицу".
Попробуйте так:
SQL
1
WHERE DATA BETWEEN DateAdd(d,-1, :DateNach) AND DateAdd(d,1, :DateKon)
Если выведет что-то, то значит пол дела сделано )

Можно еще продемонстрировать набор тестовых данных: из чего выборка, какие ограничения, что возвращает запрос.
0
3 / 3 / 0
Регистрация: 30.03.2010
Сообщений: 60
01.04.2010, 08:52  [ТС] 13
даты такие стоят:

01.03.2010
02.03.2010
03.03.2010
03.03.2010
04.03.2010
05.03.2010

задаю диапазон от 01.03.2010 до 03.03.2010 он показывает ка и прежде

01.03.2010
02.03.2010
03.03.2010
03.03.2010
04.03.2010
05.03.2010
0
15 / 15 / 1
Регистрация: 30.03.2010
Сообщений: 47
01.04.2010, 09:02 14
Эммм... А грядка точно связана с запросом правильно? Проверьте связи DBGrid-DataSource-Query.
0
3 / 3 / 0
Регистрация: 30.03.2010
Сообщений: 60
01.04.2010, 09:04  [ТС] 15
я добавила код который вы предложили, но он чет на него ругается!!мож я че не пойму((((
0
15 / 15 / 1
Регистрация: 30.03.2010
Сообщений: 47
01.04.2010, 09:12 16
Ну, судя по Вашему посту, данные в грид подтягивались из ADOTable. Если это так и Вы это не меняли, то в компоненте DataSet, с которым связан грид, надо вместо ADOTable указать Ваш компонент с запросом. Ну и обработчики на его обновление прикрутить к дататаймпикерам.

Вообще лучше тогда уж один раз при дизайне компонента ввести в него запрос и типы параметров, а в программе уже только передавать параметры...
1
3 / 3 / 0
Регистрация: 30.03.2010
Сообщений: 60
01.04.2010, 09:27  [ТС] 17
аааааа......ништяк заработало

СПАСИБО ВАМ БОЛЬШОЕ ПРЕБОЛЬШОЕ
0
15 / 15 / 1
Регистрация: 30.03.2010
Сообщений: 47
01.04.2010, 09:40 18
Да не за что, всегда рад помочь чем смогу...
0
57 / 57 / 10
Регистрация: 27.02.2010
Сообщений: 282
01.04.2010, 10:14 19
Покажите свой код
0
3 / 3 / 0
Регистрация: 30.03.2010
Сообщений: 60
01.04.2010, 10:26  [ТС] 20
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.BitBtn1Click(Sender: TObject);
var
 dateNach, dateKon:TDate;
begin
    with ADOQuery1 do
     begin
        Close;
        active:=false;
       SQL.Clear;
        SQL.Add('Select * from smo1 ');
       SQL.Add('Where Data between :DateNach -1 and :DateKon');
       Parameters.ParamByName('DateNach').DataType:= ftDate;
      Parameters. ParamByName('DateKon').DataType:= ftDate;
      Parameters.  ParamByName('DateNach').Value:= DateTimePicker1.Date;
     Parameters.   ParamByName('DateKon').Value:= DateTimePicker2.Date;
        Open;
        active:=true;
        if RecordCount = 0 then ShowMessage('Çàïèñåé çà äàííûé ïåðèîä íåò!!!');
end;
end;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2010, 10:26

DBGrid: фильтрация по дате с учетом только дня и месяца
Таблица БД Paradox содержит поле "Birthday" (дата рождения в формате dd.mm.yyyy) Для вывода этой...

Фильтрация DBGrid через ComboBox и Edit
Хочу использовать фильтрацию в DBEdit в столбце, поля которого имеют тип данных Числовой и связаны...

Как вывести в DBGrid информацию только по выбранной строке в другой таблице DBGrid?
У меня есть 3 таблицы - Компании, Адреса и Квартиры. Компании содержит поля - Код компании и...

Фильтрация данных в DBGrid через SQL запрос DataSet-a
Delphi 2009, fibplus, firebird. Имеется DataSet c SQL-запросом: SELECT distinct ...

Работа с датами (DateTimePicker)
на форме два компонента DateTimePicker и один Edit, мне нужно расчитать стаж, я задаю начало и...

Интервал. DateTimePicker. БД
Форма. Расположены 2 ДТП. Нужно чз SQL запрос вывести из дбгрид или эдит количество кинотеатров,...


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

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

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