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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2012, 19:01   #1
alexander1111
Пользователь
 
Регистрация: 05.03.2011
Сообщений: 37
По умолчанию поиск по базе

Доброго времени суток, форумчане
Нашел в сети описание поиска, "вводишь первую букву / слово - отображает все записи содержащие эту букву/слово"
решил попробовать у себя. не работает корректно.

вот сам код

Код:
procedure TForm3.sEdit1Change(Sender: TObject);
begin
If (SEdit1.Text = '') Then
     ADOQuery1.Filtered:=true
  Else
      ADOQuery1.Filtered:=false;
ADOQuery1.Filter:='Фамилия ='+QuotedStr(SEdit1.Text);
end;
Код:
procedure TForm3.ADOQuery1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
Accept:=False;
If (Copy (ADOQuery1DSDesigner2.AsString,1,  Length(SEdit1.Text))= SEdit1.Text) Then Accept:=True;
end;
Начинаю вводить букву или текст - игнорит( Что нужно подкорректировать?

вот сам источник - откуда я выдернул это.
http://hashcode.ru/questions/59184/sql-запросы-в-делфи
alexander1111 вне форума Ответить с цитированием
Старый 10.02.2012, 19:22   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
procedure TForm3.sEdit1Change(Sender: TObject);
begin
 with  ADOQuery1 do begin
  If not Filtered then Filtered:=true;
 end;
end;
При использовании обработчика OnFilterRecord само условие фильтра указывать не надо.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.02.2012, 19:34   #3
alexander1111
Пользователь
 
Регистрация: 05.03.2011
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
procedure TForm3.sEdit1Change(Sender: TObject);
begin
 with  ADOQuery1 do begin
  If not Filtered then Filtered:=true;
 end;
end;
При использовании обработчика OnFilterRecord само условие фильтра указывать не надо.
проблема не исчезла( как было так и осталось
alexander1111 вне форума Ответить с цитированием
Старый 10.02.2012, 19:35   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

ндяя

Цитата:
Код:
procedure TForm3.sEdit1Change(Sender: TObject);
begin
If (SEdit1.Text = '') Then // если эдит пустой
     ADOQuery1.Filtered:=true//включаем фильтрацию
  Else // иначе
      ADOQuery1.Filtered:=false; //отключаем фильтрацию
ADOQuery1.Filter:='Фамилия ='+QuotedStr(SEdit1.Text);// но в любом случае дописываем в фильтр Фамилия = 'текст из эдита'
end;
прикольно))

тогда уж так
Код:
procedure TForm3.sEdit1Change(Sender: TObject);
begin
      ADOQuery1.Filtered:=false;
       ADOQuery1.Filter:='Фамилия ='+QuotedStr(SEdit1.Text+'*');
      ADOQuery1.Filtered:=true;
end;
отключение и включение фильтрации нужно только если датасет не позволяет менять фильтр при включенной фильтрации (ADOQuery1.Filtered:=true; )
если датасет позволяет, то хватит просто установить в дизайнере свойство датасета filtered в true и от строчек
ADOQuery1.Filtered:=false; и
ADOQuery1.Filtered:=true; вообще избавится.

Код:
procedure TForm3.ADOQuery1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
Accept:=False;
If (Copy (ADOQuery1DSDesigner2.AsString,1,  Length(SEdit1.Text))= SEdit1.Text) Then Accept:=True;
end;
это вообще альтернативный вариант, тут проверяется каждая запись, нужна ли она для отображения, это стоит использовать только для очень сложных условий, которые не получается записать в простом фильтре. И onFilterRecord работает только при включенной фильтрации.

PS
Цитата:
Сообщение от alexander1111 Посмотреть сообщение
проблема не исчезла( как было так и осталось
странно, если вы оставили обработчик onFilterRecord как у вас было, а в
Код:
procedure TForm3.sEdit1Change(Sender: TObject);
написали то что предложил Stilet, то всё у вас должно было работать.

Последний раз редактировалось vovk; 10.02.2012 в 19:44.
vovk вне форума Ответить с цитированием
Старый 10.02.2012, 20:34   #5
alexander1111
Пользователь
 
Регистрация: 05.03.2011
Сообщений: 37
По умолчанию

Ребят, спасибо вам за помощь.. Заработало

Последний раз редактировалось alexander1111; 11.02.2012 в 18:11.
alexander1111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по базе niziriska PHP 5 02.09.2010 06:33
последовательный поиск по базе bosston БД в Delphi 21 26.06.2009 14:43
Поиск по базе данных ERASERROR БД в Delphi 4 14.03.2008 16:34
Поиск по базе Антон Шестаков БД в Delphi 1 22.01.2008 20:32
Поиск по базе Таня84 БД в Delphi 3 09.02.2007 10:53