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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2009, 01:24   #1
Derius
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 21
По умолчанию Фильтрация и ADO

Помогите, пожалуйста.
У меня существует база в Access (содержит только 2 поля *Фамилия*, *Имя*)
Я подключаю ее в Delphi - не вопрос..
Вопрос другой - как сделать фильтр (вводя хотя бы несколько букв в Edit) чтобы пошло отсеивание в таблице, например по *Фамилия*, желательно что бы фильтровало не по нажатию кнопки, а сразу, при вводе каждой новой буквы?!
Много учебников пересмотре, все грамотные, а объяснить толком то и не могут. Я понимаю так что нужно использовать запросы...
Если у кого-то будет желание - поясните пожалуйста ((
Derius вне форума Ответить с цитированием
Старый 30.06.2009, 01:31   #2
Zibellina
Новичок
Джуниор
 
Регистрация: 29.06.2009
Сообщений: 10
По умолчанию

Код:
procedure TForm1.Button5Click(Sender: TObject);
begin
 with ADOQuery2, SQL do begin
    Close;
    Text:='SELECT * FROM <название БД> WHERE <поле> like '+QuotedStr(LabeledEdit2.Text+'%')+';';
    Open;
  end;
end;
это чтоб по нажатию на кнопку...
подругому не умею...
LabeledEdit2 -поле куда записывается
Zibellina вне форума Ответить с цитированием
Старый 30.06.2009, 01:41   #3
Derius
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Zibellina Посмотреть сообщение
Код:
procedure TForm1.Button5Click(Sender: TObject);
begin
 with ADOQuery2, SQL do begin
    Close;
    Text:='SELECT * FROM <название БД> WHERE <поле> like '+QuotedStr(LabeledEdit2.Text+'%')+';';
    Open;
  end;
end;
это чтоб по нажатию на кнопку...
подругому не умею...
LabeledEdit2 -поле куда записывается
Спасибо за пояснение... но, а если допустим у меня будет база с 10 000 фамилиями - я ж щелкать по кнопке устану
Derius вне форума Ответить с цитированием
Старый 30.06.2009, 01:52   #4
Zibellina
Новичок
Джуниор
 
Регистрация: 29.06.2009
Сообщений: 10
По умолчанию

вобщем у тебя лайбл будет куда ты будешь вводиьт фаилию, вот там и надо будет прописать этот код
Код:
with ADOQuery2, SQL do begin
    Close;
    Text:='SELECT * FROM <название БД> WHERE <поле> like '+QuotedStr(LabeledEdit2.Text+'%')+';';
    Open;
Zibellina вне форума Ответить с цитированием
Старый 30.06.2009, 01:54   #5
Zibellina
Новичок
Джуниор
 
Регистрация: 29.06.2009
Сообщений: 10
По умолчанию

слушай подскажи если знаешь, как создать дополнительный столбик в дбгрид?
Zibellina вне форума Ответить с цитированием
Старый 30.06.2009, 07:18   #6
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Код:
procedure TF_Main.Edit_searchKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  ADOQuery.Active:=False;
  ADOQuery.SQL.Clear;
  ADOQuery.SQL.Add('SELECT * FROM [Tablica] WHERE [FIO] LIKE "'+Edit_Search.Text+'%"');
  ADOQuery.Active:=True;
end;
Поиск происходит при вводе текста в едит
S@fer вне форума Ответить с цитированием
Старый 30.06.2009, 08:17   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ко всему вышесказанному следует не забывать возможность отсеивания в обработчие OnFilterRecord, пример которого в хелпе Делфи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2009, 09:21   #8
Derius
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 21
По умолчанию

Цитата:
Сообщение от S@fer Посмотреть сообщение
Код:
procedure TF_Main.Edit_searchKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  ADOQuery.Active:=False;
  ADOQuery.SQL.Clear;
  ADOQuery.SQL.Add('SELECT * FROM [Tablica] WHERE [FIO] LIKE "'+Edit_Search.Text+'%"');
  ADOQuery.Active:=True;
end;
Поиск происходит при вводе текста в едит

т.е. мне нужно написать эту процедуру автономно? (добавить еще ее в type)

Но извините если я сейчас глупость скажу -
procedure TF_Main.Edit_searchKeyU, где -
TF_Mail - это Form1 у меня
и Edit_serchKeyU - это вот что?!
Derius вне форума Ответить с цитированием
Старый 30.06.2009, 09:25   #9
Derius
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Derius Посмотреть сообщение
т.е. мне нужно написать эту процедуру автономно? (добавить еще ее в type)

Но извините если я сейчас глупость скажу -
procedure TF_Main.Edit_searchKeyU, где -
TF_Mail - это Form1 у меня
и Edit_serchKeyU - это вот что?!
сорри, догнал уже... только вот не происходит отсеивание
Derius вне форума Ответить с цитированием
Старый 30.06.2009, 09:26   #10
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Цитата:
только вот не происходит отсеивание
Показывай код. Надеюсь DBGrid связан с тем Query в котором происходит фильтрация?
S@fer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация Screame Microsoft Office Excel 7 01.07.2009 22:37
Фильтрация Felonalex БД в Delphi 4 24.10.2008 20:09
фильтрация отображения из ADO... Roof БД в Delphi 5 19.08.2008 14:38
Фильтрация по неполному ключу в компонентах ADO ГЫнок Помощь студентам 1 17.08.2008 16:58
Фильтрация Лукманов Александр БД в Delphi 1 26.06.2008 10:18