Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.09.2011, 15:03
Red_Garry Red_Garry вне форума
Начинающий
 
Регистрация: 07.07.2011
Сообщения: 126
Репутация: 10
По умолчанию Вопрос по фильтру ADOTable

Здравствуйте!
Код:
procedure TForma1.Edit1Change(Sender: TObject);
begin
    if Length(Edit1.Text)>0 then
       DataModule1.ADOTable1.Filtered:=true
   else
       DataModule1.ADOTable1.Filtered:=false;
       DataModule1.ADOTable1.Filter:='f1>'''+Edit1.Text+'''';
end;
Админ: Пользуемся тегами для оформления кода, иначе последуют санкции!

Хотелось бы, чтобы при изменении значения Edit1.Text, включался фильтр для ADOTable1 для поля f1. Т.е. чтобы в DBGrid попадали записи, в которых поле f1 начинается с текста в Edit1. При этом по мере набора текста в Edit1 отфильтровывалось ненужное. Указанная процедура компилится, но результата нет - ненужное не отбрасывается.
Помогите пожалуйста!

Последний раз редактировалось Admin, 07.09.2011 в 15:14.
Ответить с цитированием
  #2  
Старый 07.09.2011, 15:55
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Так попробуйте:
Код:
DataModule1.ADOTable1.Filter:='f1 like ''%'+Edit1.Text+'%''';
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 07.09.2011, 16:07
Red_Garry Red_Garry вне форума
Начинающий
 
Регистрация: 07.07.2011
Сообщения: 126
Репутация: 10
По умолчанию

Попробовал и в ответ вижу сообщение:
"Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом".
Ответить с цитированием
  #4  
Старый 07.09.2011, 16:15
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

f1 у вас строковое?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 07.09.2011, 16:23
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ну а так?

Код:
procedure TForma1.Edit1Change(Sender: TObject);
begin
if Edit1.Text = '' then Exit;
 DataModule1.AdoTable1.Filter := Format('[f1] like ''%%%s%%''',[Edit1.Text]);
 DataModule1.AdoTable1.Filtered := True;
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 07.09.2011, 16:54
Red_Garry Red_Garry вне форума
Начинающий
 
Регистрация: 07.07.2011
Сообщения: 126
Репутация: 10
По умолчанию

спасибо, так работает, но выводит все строки с включением подстроки, а мне нужно только те, которые сначала. Как поправить?
Ответить с цитированием
  #7  
Старый 07.09.2011, 17:07
Red_Garry Red_Garry вне форума
Начинающий
 
Регистрация: 07.07.2011
Сообщения: 126
Репутация: 10
По умолчанию

Код:
if Edit1.Text = '' then Exit;
  DataModule1.AdoTable1.Filter := Format('[f1] like '+#39+'%s%%'+#39, [Edit1.Text]);
  DataModule1.AdoTable1.Filtered := True;

Вот так работает! Спасибо за помощь!

Последний раз редактировалось lmikle, 07.09.2011 в 22:57.
Ответить с цитированием
  #8  
Старый 07.09.2011, 17:53
Аватар для Voron
Voron Voron вне форума
Новичок
 
Регистрация: 16.09.2010
Сообщения: 61
Репутация: 10
По умолчанию

Попробуй использовать ADOQuery. Средствами SQL это очень легко реализовать используя примерно такую конструкцию

Код:
'select * from <table>  where <поле>='+Edit1.text
Ответить с цитированием
  #9  
Старый 09.09.2011, 08:58
Red_Garry Red_Garry вне форума
Начинающий
 
Регистрация: 07.07.2011
Сообщения: 126
Репутация: 10
По умолчанию

спасибо, попробую
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter