Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > фильтрация БД


Автор: incorper 1.11.2004, 09:14
Напишите кто нибудь пример фильтрации базы данных, а то у меня постоянно ошибка выскакивает

Автор: ~FoX~ 1.11.2004, 09:34
Код
Table1.Filter := 'BlaBlaBla'


Какая ошибка? Какая база? Как фильтруешь? Что используешь?
Выражайтесь конкретней! :stena :rtfm

Автор: MacTep 3.11.2004, 00:12
Приблизительно так:
Код
Table1.Filter:='Fam='Иванов'';
Table1.Filtered:=True;
.
Тогда тебе в таблице будут только Ивановы (ну или около того). только разберись с кавычками! Вот и все! :)

Автор: Medved 3.11.2004, 01:02
Лучше вообще ее не используй.... через запросы батенька, через запросы.

Автор: MacTep 3.11.2004, 11:05
Иногда требуется все это провернуть без запросов, вот тогда и помогает Table! :)

Автор: Medved 3.11.2004, 11:28
Сильно сомневаюсь.

Автор: skorpik 19.1.2008, 17:27
Помогите плиз: нужно искать необходимую запись,  по части информации о ней. которая следует таким образом. В  одном Edit ввожу часть информации, в другом edit другую часть информации, в третьем edit еще часть информации. теперь по этим данным нужно найти строку(и) из базы данных (файла dbf), в котрой будет также и эта введенная информация. Как мне это сделать .но чтобы она искалась сразу же при вводе данных (посимвольно) в эти edit-ы? Хочется наверное поиск делать в данных. которые находятся в памяти компьютера, так как если жедаю поиск в dbf, то при вводе очередного символа компьютер задумывается на мгновение, а потом опять появляется курсор. СМне нужно чтобы было все быстро. Еще раз, прошу, помогите.
e-mail: pavlovsky-s@rambler.ru

Автор: Данкинг 19.1.2008, 17:39
Цитата(skorpik @ 19.1.2008,  17:27)
Как мне это сделать .но чтобы она искалась сразу же при вводе данных (посимвольно) в эти edit-ы? 

Это же с великими тормозами будет, но через запрос, как ещё.

Автор: skorpik 19.1.2008, 22:03
Данкинг, так я же думаю все загрузить ка-нибудь в память. Можно ли это как-нибудь сделать? Я как-то видел где-то в одном из телефонных справлчнико это реализовано.

Автор: Ofer 20.1.2008, 01:26
skorpik, чтобы оно фильтровало "на лету", в обработчике OnChange для Edit`a делай установку фильтра. Только, насколько я знаю, запросами действительно быстрее будет.

Автор: skorpik 22.1.2008, 00:49
Ofer, не могли бы вы мне подсказать какие имеено сюда запросы подойдут? Неужели при каждом вводе символа в поле ввода edit запускать query.active:=true или что-то еще?

Автор: Ofer 22.1.2008, 01:46
Думаю 
Код

SELECT * FROM <твоя_таблица> WHERE <поле1> :LIKE <переменная1> AND <поле2> :LIKE <переменная2> AND ......


Будет достаточно(надеюсь без ошибок написал)))). А вообще, лучше в руководстве по SQL покапаться.

Цитата(skorpik @  22.1.2008,  00:49 Найти цитируемый пост)
Неужели при каждом вводе символа в поле ввода edit запускать query.active:=true или что-то еще?


Выходит что да.
P.S. Не забудь для соответствующих Едитов
Код

ADOQuery1.Parameters.ParamByName('<имя_переменной>').Value := Edit1.Text;


если ты конечно ADO используеш

Автор: skorpik 25.1.2008, 20:23
Ofer, пробовал и так. Но все равно при вводе новых символов в edit немного тормозит и не позволяет вводить на мгновение символы. Может подскажете кто-нибудь как загрузить в память, если это ваще возможно. Думаю, что можно как-то при открытии программы загружались бы все записи в память, а потом как-нибудь оттуда их искать (например., как в массиве записей)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)