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

Фильтр по нескольким полям в одном Edit

21.03.2012, 14:45. Показов 5242. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть Table1, DBGrid1, Edit1
Поиск осуществляется хоть сначала, хоть с середины, без учета регистра НО... ищет только по полю Name1.
Надо следующее: при наборе букв в Эдите он искал и в поле Name1 и в поле Gorod и в других полях

Код такой
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.Edit1Change(Sender: TObject);
begin
If length(edit1.text)>0
then
Begin
 table1.filtered:=true;
End else table1.filtered:=false;
end;
 
procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
 
begin
accept:=pos(AnsiUpperCase(Edit1.Text), AnsiUpperCase(DataSet['Name1']))<>0;
end;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.03.2012, 14:45
Ответы с готовыми решениями:

Фильтр по нескольким полям
Привет всем. Использую OracleDataSet - Zayavka. Пишу &quot;последовательный&quot; фильтр, (когда-то был такой вопрос, но на Acces, и там работало...

Фильтр в Table'e по нескольким полям
Здравствуйте! Плиз хелп! Нужно реализовать фильтрацию записей в таблице (TTable) по одному(нескольким) полям с неточным поиском (по типу...

Не совсем обычный фильтр по нескольким полям
подскажите пожалуйста, мне надо сделать базу данных, в которой в делфи при заполнении можно выбирать страну, например, Россия, а в...

13
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
21.03.2012, 15:04
Так у вас программно задан режим фильтрайии по полю Name1. Добавьте условия по другим полям и будет вам счастье!
0
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 35
22.03.2012, 10:05  [ТС]
Цитата Сообщение от SAMZ Посмотреть сообщение
Так у вас программно задан режим фильтрайии по полю Name1. Добавьте условия по другим полям и будет вам счастье!
так вот как это самое условие и прописать? О_о Пробовала всяко разно - итог один ошибка
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
22.03.2012, 10:14
Цитата Сообщение от МАрковка Посмотреть сообщение
Пробовала всяко разно - итог один ошибка
Как пробовала - это, конечно, секрет! И КАКАЯ ОШИБКА - это еще больший секрет!
0
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 35
22.03.2012, 12:41  [ТС]
Цитата Сообщение от SAMZ Посмотреть сообщение
Как пробовала - это, конечно, секрет! И КАКАЯ ОШИБКА - это еще больший секрет!
Пробовала по разному и ошибки конечно же не сохранила. Снова пробовать, чтобы наступать на теже "грабли" не хочется.
Поэтому прошу помощи Хотя бы примерно...
0
0 / 0 / 0
Регистрация: 05.03.2012
Сообщений: 10
22.03.2012, 14:07
попробуй через ADOQuery
Delphi
1
2
3
4
5
6
7
8
9
DataModule1.ADOQuery1.SQL.Add('SELECT *');
DataModule1.ADOQuery1.SQL.Add('FROM table');
DataModule1.ADOQuery1.SQL.Add('WHERE [Name] LIKE :name');
DataModule1.ADOQuery1.SQL.Add('OR [gorod] LIKE :gorod');
 
DataModule1.ADOQuery1.Parameters.ParamByName('name').Value:=
'%'+ Edit2.Text +'%';
DataModule1.ADOQuery1.Parameters.ParamByName('gorod').Value:=
'%'+Edit2.Text +'%';
0
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 35
22.03.2012, 14:55  [ТС]
Пробовала просто добаить еще одну строку
Delphi
1
accept:=pos(AnsiUpperCase(Edit1.Text), AnsiUpperCase(DataSet['Gorod']))<>0;
Он компилирует, но когда пробуешь вводить текст, то ошибка "Counld not convert variant of type (Null) into type (String)"

Добавлено через 1 минуту
Цитата Сообщение от belkaS Посмотреть сообщение
попробуй через ADOQuery
Delphi
1
2
3
4
5
6
7
8
9
DataModule1.ADOQuery1.SQL.Add('SELECT *');
DataModule1.ADOQuery1.SQL.Add('FROM table');
DataModule1.ADOQuery1.SQL.Add('WHERE [Name] LIKE :name');
DataModule1.ADOQuery1.SQL.Add('OR [gorod] LIKE :gorod');
 
DataModule1.ADOQuery1.Parameters.ParamByName('name').Value:=
'%'+ Edit2.Text +'%';
DataModule1.ADOQuery1.Parameters.ParamByName('gorod').Value:=
'%'+Edit2.Text +'%';
у меня BDE...
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
22.03.2012, 15:03
Delphi
1
accept:=pos(AnsiUpperCase(Edit1.Text), AnsiUpperCase(DataSet.FieldByName('Gorod').AsString))<>0;
1
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 35
23.03.2012, 06:37  [ТС]
Цитата Сообщение от SAMZ Посмотреть сообщение
Delphi
1
accept:=pos(AnsiUpperCase(Edit1.Text), AnsiUpperCase(DataSet.FieldByName('Gorod').AsString))<>0;
Спасибо! Добавила эту строчку, но теперь он ищет только по городу, а по Name1 - нет

Добавлено через 2 минуты
Пробовала поменять эти 2 строчки местами. Получилось наоборот по Name1 ищет, а по Gorod нет. Т.е. первая строчка игнорируется О_о
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
23.03.2012, 06:44
Цитата Сообщение от МАрковка Посмотреть сообщение
Пробовала поменять эти 2 строчки местами. Получилось наоборот по Name1 ищет, а по Gorod нет. Т.е. первая строчка игнорируется
Ситуация полностью эквивалентна басне "Мартышка и очки"! Надо все же слегка наморщить мозг!
0
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 35
23.03.2012, 07:48  [ТС]
Еще пробовала добавить такую строчку
Delphi
1
accept:=pos(AnsiUpperCase(Edit1.Text), AnsiUpperCase(DataSet['Name1'] and DataSet['Gorod']))<>0;
Он компилирует Но форма куда-то исчезает О_о

Добавлено через 52 минуты
Перезапустила Делфи
После компиляции ошибка при вводе слова для поиска
Could not convert variant of type (String) into type (Boolean)
0
0 / 0 / 0
Регистрация: 05.03.2012
Сообщений: 10
23.03.2012, 10:43
Цитата Сообщение от МАрковка Посмотреть сообщение
у меня BDE...
какая разница, запрос везде одинаков. используй просто Query
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
23.03.2012, 16:19
Вот это будет работать для ЛЮБОГО отображаемого в ЛЮБОМ TDBGride датасета, причем поиск будет выполняться для ТЕКУЩЕЙ колонки.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
var
  i: integer;
begin
  for i : = 0 to ComponentCount-1 do  // Найти отображающий грид
    if (Components[i] is TDBGrid) and (TDBGrid(Components[i]).DataSource.DataSet=DataSet) then
      begin
       accept := (pos(Edit1.Text,TDBGrid(Components[i]).SelectedField.AsString))>0);
       break; 
      end;
end
0
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 35
23.03.2012, 22:34  [ТС]
я уже разобралась СПАСИБО Огромное доброму человечку Губареву Михаилу
а код такой
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
accept:=(pos(AnsiUpperCase(Edit1.Text), AnsiUpperCase(DataSet['Name1']))) or (pos(AnsiUpperCase(Edit1.Text), AnsiUpperCase(DataSet['Gorod'])))<>0;
end;
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
if length(Edit1.Text)>0
then Table1.Filtered:=true
else Table1.filtered:=false
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2012, 22:34
Помогаю со студенческими работами здесь

Фильтр по нескольким полям через Edit, DBLookupComboBox
Есть Edit и DBLookupComboBox в DBLookupComboBox выпадающий список дициплин,а в Edit я ввожу номер четверти Фильтрует только по одному из...

Фильтр по форме по нескольким логическим полям с использованием кнопки Общий фильтр
Здравствуйте! Есть простая таблица и созданная форма. Идея в том, чтобы ставя галки осуществлять поиск (с помощью кнопки общий фильтр...

Фильтр по нескольким полям
Подскажите. Пытаюсь сделать, чтоб как в экселе фильтр можно было ставить в столбцах таблицы DBGrid. В идеале не просто фильтр, а с...

Фильтр по форме по нескольким полям
Добрый день. Помогите,пожалуйста, с вопросом фильтра по форме. При фильтре по одному полю все работает, при фильтре по 2 полям поставил...

Фильтр по нескольким полям в bindingsource
Появилась необходимость фильтровать данные по нескольким полям в DataGridView. По одному полю фильтрую без проблем, но когда дело доходит...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru