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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2010, 20:05   #1
bablzz
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 40
По умолчанию Вопрос с Firebird Interbase (фильтрация)

Нужна помощь следующего характера:
при постепенном вводе букв в поле Edit1 в IBTable1 должны отображаться те страны, которые соответствуют очередности введенных букв.

типа так:

Шаг 1:
Edit1 Р
IBTable1 Россия Руммыния

Шаг 2:
Edit1 Ро
Ibtable1 Россия


Если "влом" писать, подскажите операторы или ссылки.

Если не сложно, скиньте ссылки на учебники по Firebird/

Заранее спасибо.
Изображения
Тип файла: jpg Безымянный.jpg (65.3 Кб, 131 просмотров)
bablzz вне форума Ответить с цитированием
Старый 28.04.2010, 21:48   #2
bezOn
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 51
По умолчанию

Я бы не стал использовать IBTable для этого дела...
Намного проще это делать через IBQuery

Код:
procedure TForm1.Edit1Change(Sender: TObject);
begin

  IBQuery.SQL.Clear;
  IBQuery.SQL.ADD('SELECT * FROM ИмяТаблицы');
  IF Edit1.Text <> '' then 
     IBQuery.SQL.ADD('WHERE Столица LIKE "%'+Edit1.Text'%"');
  IBQuery.SQL.ADD('ORDER BY Столица');

{
  Для того чтобы направить сортировку нужно добить:
    IBQuery.SQL.ADD('ASC'); //По возрастанию
    ЛИБО
    IBQuery.SQL.ADD('DESC'); //По убыванию
}
  IBQuery.Open;

end;
bezOn вне форума Ответить с цитированием
Старый 29.04.2010, 00:39   #3
bablzz
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 40
По умолчанию

А причем тут параметр "Столица"? мне нужно отфильтровать по Странам
постепенно вводя Буквы в edit1.

А так не хочет пахать ваще)
bablzz вне форума Ответить с цитированием
Старый 29.04.2010, 06:00   #4
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

тебе предложили не фильтрование по а сортировку...
что именно не работает? код в студию!!!
dron-s вне форума Ответить с цитированием
Старый 29.04.2010, 10:25   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

дезигн "морды" на высоте
не сразу понятно для кого фильтр предназначен (написал бы "Отбор по странам")

но суть решения тебе верно привели
Код:
 IBQuery.SQL.Clear;
  IBQuery.SQL.ADD('SELECT * FROM Таблица1');
  IF Edit1.Text <> '' then 
     IBQuery.SQL.ADD('WHERE Страна LIKE "%'+Edit1.Text'%"');
  IBQuery.SQL.ADD('ORDER BY Страна');
а еще неплохо бы все это к одному регистру привести
soleil@mmc вне форума Ответить с цитированием
Старый 29.04.2010, 13:13   #6
bablzz
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 40
По умолчанию

IBQuery1.SQL.Clear;
IBQuery1.SQL.ADD('SELECT * COUNTRY');
IF Edit1.Text <> '' then
IBQuery1.SQL.ADD('WHERE COUNTRY LIKE "%'+Edit1.Text'%"');<- вот это подчеркнул
IBQuery1.SQL.ADD('ORDER BY COUNRY');
у меня поле страна называется COUNTRY и таблица называется COUNTRY

а дизайн формы это не главное

при вводе "И" в таблице ниче не меняется(должны остаться только Испания и Италия(ну просто там у меня такие страны)))))
Изображения
Тип файла: jpg Безымянный.jpg (12.6 Кб, 133 просмотров)
bablzz вне форума Ответить с цитированием
Старый 29.04.2010, 15:28   #7
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

пользуйся тегами при вставке кода в пост

а теперь сравни что ты написал
Код:
IBQuery1.SQL.Clear;
IBQuery1.SQL.ADD('SELECT * COUNTRY');
IF Edit1.Text <> '' then
IBQuery1.SQL.ADD('WHERE COUNTRY LIKE "%'+Edit1.Text'%"');<- вот это подчеркнул
IBQuery1.SQL.ADD('ORDER BY COUNRY');
и что я исправил
Код:
IBQuery1.SQL.Clear;
IBQuery1.SQL.ADD('SELECT * FROM COUNTRY');
IF Edit1.Text <> '' then
IBQuery1.SQL.ADD('WHERE COUNTRY LIKE "%'+Edit1.Text + '%"');<- вот это подчеркнул
IBQuery1.SQL.ADD('ORDER BY COUNTRY');
и этттаа...
давай-ка сам
штанишки же уже сам умеешь надевать

все свои мегазапросы ты можешь проверить в IBExpert-е (скачай и поставь себе - всегда пригодится)
soleil@mmc вне форума Ответить с цитированием
Старый 29.04.2010, 15:32   #8
bablzz
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 40
По умолчанию

умею, умею. даже шнурочки завязывать))
просто только начинаю изучать
не изучали делфи, а сразу сунули БД DELPHI+InterBase.

спасибо большое)
bablzz вне форума Ответить с цитированием
Старый 29.04.2010, 23:18   #9
bezOn
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 51
По умолчанию

где я... чёрт очипся темой...
bezOn вне форума Ответить с цитированием
Старый 30.04.2010, 15:45   #10
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

А я делал фильтрацию так:
в свойстве OnFilterRecord таблицы пишу такой код:
Код:
Accept:=AnsiStartsStr(lForm.edCB1.Text, LK_TB.FieldByName(lForm.FilStr).AsString);
а в свойстве Edit-a OnChange пишу:
Код:
procedure TlForm.edCB1Change(Sender: TObject);
begin
DM.LK_TB.Filtered:=False;
DM.LK_TB.Filtered:=True;
end;
и всё отличненько работает

P.S. И кстати, как мне кажется, намного быстрее чем использование запросов
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрит работает в interbase а в FireBird выдает ошибку NikK1 БД в Delphi 9 13.04.2010 18:07
Проблема с Interbase 2009 и Firebird 2.1.3 forzi Софт 2 19.03.2010 15:36
Проблема с Резервированием и восстановлением базы InterBase\FireBird ХАнК Помощь студентам 3 11.03.2010 16:49
DAC компоненты для Interbase(FireBird) codekick БД в Delphi 1 21.01.2010 19:34
Клиент FireBird/InterBase sabina_smile SQL, базы данных 9 28.10.2008 21:08