Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
Delphi
(Модератор:
x77
) > Тема:
Фильтрация
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Фильтрация (Прочитано 8966 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Gora
Гость
Фильтрация
«
:
06-05-2008 16:11 »
Здравствуйте уважаемые.
Ситуация такая: база данных Paradox, на форме классическая связка DBGrid, DataSource, Table, также Combobox1 - содержит список всех полей таблицы, и Edit1 - поле для ввода данных которые пользователь надеется найти в базе.
Фильтрация таблицы происходит следующим образом: пользователь выбирает в Combobox1 поле для ф-ции, в Edit1 начинает набирать искомый текст - вводит первую буковку выводятся данные начинающиеся с этой буковки, вводит вторую - с 1 и 2й и т.д. пока не найдет полезное или ничего не найдет. т.е DBGrid пустой, так вот как отследить этот момент.
Вот часть кода:
procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
var FieldVal:string; i: integer; b: boolean;
begin
FieldVal := DataSet[COMBOBOX1.Text];
for i:=1 to length(edit1.text) do
begin
if (FieldVal
= edit1.Text
) then b:=true else b:=false;
if b=false then break;
end;
Accept := b;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
table1.Filtered:=true;
end;
Все работает как часы. Хочется узнать мнение по поводу алгоритма, оптимизации, может есть другой способ.
Записан
Sla
Команда клуба
Offline
Пол:
Re: Фильтрация
«
Ответ #1 :
06-05-2008 17:22 »
Gora
, оформи код тегами [code] [/code]
У тебя два вопроса
Как отследить
И все работает. Как оптимизировать?
Какой важней? Второй противоречит первому.
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
Gora
Гость
Re: Фильтрация
«
Ответ #2 :
06-05-2008 18:10 »
Ничего не противоречит.
Этот код работает т.е. все фильтруется, и нужно отловить момент когда искомые данные не найдены в этом основная суть вопроса.
Да в строчке if (FieldVal = edit1.Text) then b:=true else b:=false; после FieldVal и edit1.Text не хватает квадратных скобок и переменной i в средине. Ошибка не моя, форум не пропустил.
Записан
Gora
Гость
Re: Фильтрация
«
Ответ #3 :
07-05-2008 15:26 »
Код:
if table1.RecordCount = 0 then ....
Всем спасибо, все свободны.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
Re: Фильтрация
«
Ответ #4 :
08-05-2008 17:48 »
Gora
, ой, спасибо за разрешение! ))) А ты невнимательный - обернул бы код в теги, "форум бы пропустил"
Записан
>FAQ ПО ПРОГР.
>ССЫЛКИ ПО ПРОГР.
>Правила"Неотложки"
Gora
Гость
Re: Фильтрация
«
Ответ #5 :
09-05-2008 07:06 »
Ну колкости говорить мы все умеем ....
А вот еще один способ
Код:
procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept := pos(Edit1.text, DataSet[COMBOBOX1.Text])<>0;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
table1.Filtered:=true;
end;
А может кому и сгодится ...
Люди только тогда сообщают нам интересные сведения, когда мы им противоречим. Джордж Бернард Шоу
Записан
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
Re: Фильтрация
«
Ответ #6 :
09-05-2008 15:47 »
Gora
, да Боженька упаси колкости говорить
Ну вот если бы лично я знал ответ на вопрос - я бы первый и ответил.
Только я не дельфист
Записан
>FAQ ПО ПРОГР.
>ССЫЛКИ ПО ПРОГР.
>Правила"Неотложки"
Gora
Гость
Re: Фильтрация
«
Ответ #7 :
27-05-2008 12:14 »
Нашел статейку по этой теме
Фильтрация данных в Delphi
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
Delphi
(Модератор:
x77
) > Тема:
Фильтрация
Загружается...