Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 111
1

Фильтр полей в Delphi

05.08.2013, 13:13. Показов 5570. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый день ещё раз!
Форумчане, нужна ваша помощь, т.к. я перепробовал почти все виды фильтров, которые знал, просмотрел множество тем и решил сам создать тему(админы и модеры, не серчайте ), потому как не добился нужного результата фильтрации...
База SQLite, соединение Zeos.
Прилагаю код единственного более-менее нормального фильтра, который фильтрует ТОЛЬКО слово, записанное полностью.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//в комментариях записал то, что я пробовал  
procedure TForm1.Edit1Change(Sender: TObject);
begin
  if Edit1.Text <> '' then begin
//if length(Edit1.Text) > 0 then begin
    ZTable1.Filter := 'Vessel LIKE ' + #39 + Edit1.Text + #39; //фильтрует только по полному слову
  //ZTable1.Filter := 'Vessel LIKE '+ '%' + #39 + Edit1.Text + '%' + #39; эта вроде бы должна помочь, но при ней ничего не выводит
  //ZTable1.Filter := 'Vessel>'''+Edit1.Text+'''' ;
  //ZTable1.Filter := 'Vessel LIKE' + QuotedStr('''');  
  //ZTable1.Filter := 'Vessel>'''+Edit1.Text+'''' ;
    ZTable1.Filtered := true
    end else
    ZTable1.Filtered := false;
end;
Добавлено через 49 минут
Delphi
1
ZTable1.Filter := 'Vessel like' + QuotedStr(Edit1.Text);
вот так тоже на полностью введенное слово работает..)
А мне надо бы, чтобы работало начиная с 1 буквы)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2013, 13:13
Ответы с готовыми решениями:

Не работает фильтр числовых полей
Вообщем сделал фильтр ZTab.Filter:=ComboBox1.Text + ' LIKE ' + QuotedStr('*' + dblkcbb1.Text +...

фильтр на Delphi
Привет всем!!!!! Заранее извините за повторения , скорее всего был такой вопрос ,но я не нашел...

Фильтр для БД (Delphi 7)
В общем, срочно нужна ваша помощь... нужно сделать фильтр для базы данных в Delphi. Вот, например,...

Delphi! ClientDataSet запрос (фильтр)
есть таблица, в ней поле, допустим name, в ней записи: Alex Max Vlad Vova Max Max ...

25
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
05.08.2013, 17:38 2
Цитата Сообщение от Du_Law Посмотреть сообщение
надо бы, чтобы работало начиная с 1 букв
т.е. вывести все совпадения, начинающиеся с введенной первой буквы?
0
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 111
05.08.2013, 17:42  [ТС] 3
Цитата Сообщение от droider Посмотреть сообщение
т.е. вывести все совпадения, начинающиеся с введенной первой буквы?
Да, всё верно!
Я уже перешёл на ZQuery
Вот так, как должно быть, не работает
Delphi
1
ZQuery1.Filter := 'Vessel LIKE '+ '%' + #39 + Edit1.Text + '%' + #39;
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
05.08.2013, 18:12 4
Du_Law, попробуйте
Delphi
1
2
ZQuery1.Filter := 'Vessel LIKE '+QuotedStr(Edit1.Text+'%');
ZQuery1.Filtered :=true;
0
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 111
05.08.2013, 18:40  [ТС] 5
Увы, вообще ничего не выводит
У меня база SQLite, компоненты Zeos - это может играть какую-то роль?
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
05.08.2013, 19:09 6
Фильтр вообще срабатывает?
Напишите еще
[Vessel] в скобках
0
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 111
05.08.2013, 19:33  [ТС] 7
Цитата Сообщение от droider Посмотреть сообщение
Фильтр вообще срабатывает?
Вообще не срабатывает..
Если в квадратных скобках, то синтаксическая ошибка выпадает..
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
05.08.2013, 19:39 8
Цитата Сообщение от Du_Law Посмотреть сообщение
Вообще не срабатывает
значит, Вы что-то прописываете не так.
Вы прописали вышеуказанный код в обработчик OnChange для TEdit?

Добавлено через 1 минуту
Вижу, что да...
1
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 111
05.08.2013, 19:42  [ТС] 9
Да, а что надо было указывать? Я пробовал и KeyUp...
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
05.08.2013, 19:45 10
Я так думаю, что в момент фильтрации у Вас возвращаемый набор данных не отображается в TDBGrid.
Как у Вас называется TDataSource,связанный с ZQuery1?

Добавлено через 1 минуту
Цитата Сообщение от Du_Law Посмотреть сообщение
Да, а что надо было указывать?
правильно. Должен быть OnChange
1
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 111
05.08.2013, 19:45  [ТС] 11
Цитата Сообщение от droider Посмотреть сообщение
Как у Вас называется TDataSource,связанный с ZQuery1?
Так и называется - DataSource1
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
05.08.2013, 19:56 12
Такой вариант
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Edit1Change(Sender: TObject);
begin
if length(Edit1.Text) > 0 then 
 begin
ZQuery1.Filter  := 'Vessel LIKE '+QuotedStr(Edit1.Text+'%');
ZQuery1.Filtered  :=true; //в момент фильтрации
DBGrid1.DataSource.DataSet :=DataSource1; //набор данных ZQuery1;
 end 
else
 begin
 ZQuery1.Filtered := false; //при отмене
 DBGrid1.DataSource.DataSet :=DataSource2;// возвращаем полный набор данных
 end;
end;
1
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 111
05.08.2013, 20:03  [ТС] 13
А DataSource2 к чему подключить? К новому ZQuery или же старому?

Ошибка в этой строке
Delphi
1
DBGrid1.DataSource.DataSet := DataSource1;
несовместимые типы данных TDataSet и TDataSource
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
05.08.2013, 20:08 14
к компоненту, в котором у Вас содержится полный набор данных. Помимо ZQuery1 есть еще?
1
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 111
05.08.2013, 20:09  [ТС] 15
Вообще я ограничился одним, раньше была таблица, но сейчас перешёл на один ZQuery. Только что создал второй ZQuery и кинул DataSource2 на него, но запустить проект не могу - несовместимые типы..)
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
05.08.2013, 20:13 16
Вот так
Delphi
1
 DBGrid1.DataSource := DataSource1;
поспешил
0
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 111
05.08.2013, 20:17  [ТС] 17
Пустое поле...
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
05.08.2013, 21:14 18
Цитата Сообщение от Du_Law Посмотреть сообщение
А мне надо бы, чтобы работало начиная с 1 буквы
Это называется "инкрементный поиск" (incremental search). И запросами не делается. В Дельфи реализован в TTable и TClientDataSet. В сторонних компонентах в EhLib и нескольких других, но с какими наборами данных при этом может вестись работа я не знаю.
1
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 111
05.08.2013, 21:25  [ТС] 19
Цитата Сообщение от northener Посмотреть сообщение
Это называется "инкрементный поиск" (incremental search). И запросами не делается. В Дельфи реализован в TTable и TClientDataSet. В сторонних компонентах в EhLib и нескольких других, но с какими наборами данных при этом может вестись работа я не знаю.
Его же можно будет связать с Edit'ом, верно?
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
05.08.2013, 21:30 20
Цитата Сообщение от Du_Law Посмотреть сообщение
Его же можно будет связать с Edit'ом, верно?
Собственно для этого его и придумали. Пользователь вводит в Эдит слово, а список при этом позиционируется на ближайшее слово, в котором совпали уже введенные в Эдит буквы.
1
05.08.2013, 21:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.08.2013, 21:30
Помогаю со студенческими работами здесь

Автозаполнение полей Delphi + IntB
Есть таблица с данным, есть кнопка изменить данные, (при нажатии на кнопку открывается новая форма...

Delphi: DBGrid - вычисление полей
Это опять я... (ну или всё ещё?) В общем, например, в таблице есть 4 поля. Первое ID, а чётвёртое...

Delphi сортировка по сумме нескольких полей
Здравствуйте. Есть БД формата *.mdb, схема подключения - ADOConnection-&gt;ADOTable. В БД есть...

Delphi 7 access database перенос полей
Здравствуйте, у меня вот такая проблема есть 2 таблицы, созданные в Access находятся на одной...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru