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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2008, 20:07   #1
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию Фильтрация

Здравствуйте уважаемые.
Ситуация такая: база данных 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[i] = edit1.Text[i]) 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;

Все работает как часы. Хочется узнать мнение по поводу алгоритма, оптимизации, может есть другой способ.
Gorychev вне форума Ответить с цитированием
Старый 06.05.2008, 21:16   #2
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

выбросить в топку TTable и использовать TQuery с SQL (Like)
dron-s вне форума Ответить с цитированием
Старый 06.05.2008, 21:46   #3
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Вообще то суть вопроса не в том. Нужна оценка конкретного кода, и ответ на вопрос <... т.е DBGrid пустой, так вот как отследить этот момент?>>

К чему такая спешка.
Gorychev вне форума Ответить с цитированием
Старый 07.05.2008, 00:55   #4
Bor_Gus
Пользователь
 
Регистрация: 02.04.2008
Сообщений: 18
По умолчанию

Я так понял тебе надо определить когда Grid становися пустой, можешь проверять количество записей в отфильтрованом DataSet...
Bor_Gus вне форума Ответить с цитированием
Старый 07.05.2008, 14:34   #5
XPAiN
Форумчанин
 
Аватар для XPAiN
 
Регистрация: 31.10.2007
Сообщений: 108
По умолчанию

например так: if table1.RecordCount<>0 then ...
delphi is my world
XPAiN вне форума Ответить с цитированием
Старый 07.05.2008, 19:18   #6
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Спасибо XPAIN все получилось
Gorychev вне форума Ответить с цитированием
Старый 04.06.2008, 07:28   #7
Avalonix
Пользователь
 
Регистрация: 20.04.2008
Сообщений: 57
По умолчанию

пишу фильтр
Код:
 DataModule1.TableMPO.Filtered:=False;
 DataModule1.TableMPO.Filter:='(mpo_ch='+EditCh.Text+') and (mpo_mes='+EditMes.Text+') and (mpo_god='+EditGod.Text+')';
 DataModule1.TableMPO.Filtered:=True;
не работает с ошибкой арифметические операции не поддерживаются.
Где у меня не правильно?
Avalonix вне форума Ответить с цитированием
Старый 04.06.2008, 08:03   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не вижу ничего криминального. Ты бы протрассировал бы по шагам и посмотрел бы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2008, 11:46   #9
Avalonix
Пользователь
 
Регистрация: 20.04.2008
Сообщений: 57
По умолчанию

Вот хоть тресни при запуске с таким фильтром пишет - Арифметические операции в выражении фильтра не поддерживаются..
Может можно иначе как то записать? Подскажите пожалуйста..
Avalonix вне форума Ответить с цитированием
Старый 04.06.2008, 12:23   #10
Domovoy
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 254
По умолчанию

Возможно дело в кавычках
Domovoy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация данных Gladiator БД в Delphi 4 23.05.2009 12:37
Фильтрация Лукманов Александр БД в Delphi 1 26.06.2008 10:18
фильтрация в dbase vet_coder БД в Delphi 7 29.11.2007 16:02
фильтрация в DBGrid ГОСЕАН БД в Delphi 4 17.07.2007 17:05
Медианная фильтрация game87 Помощь студентам 2 14.12.2006 21:15