|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.05.2008, 20:07 | #1 |
Участник клуба
Регистрация: 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; Все работает как часы. Хочется узнать мнение по поводу алгоритма, оптимизации, может есть другой способ. |
06.05.2008, 21:16 | #2 |
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
выбросить в топку TTable и использовать TQuery с SQL (Like)
|
06.05.2008, 21:46 | #3 |
Участник клуба
Регистрация: 08.03.2008
Сообщений: 1,537
|
Вообще то суть вопроса не в том. Нужна оценка конкретного кода, и ответ на вопрос <... т.е DBGrid пустой, так вот как отследить этот момент?>>
К чему такая спешка. |
07.05.2008, 00:55 | #4 |
Пользователь
Регистрация: 02.04.2008
Сообщений: 18
|
Я так понял тебе надо определить когда Grid становися пустой, можешь проверять количество записей в отфильтрованом DataSet...
|
07.05.2008, 14:34 | #5 |
Форумчанин
Регистрация: 31.10.2007
Сообщений: 108
|
например так: if table1.RecordCount<>0 then ...
delphi is my world
|
07.05.2008, 19:18 | #6 |
Участник клуба
Регистрация: 08.03.2008
Сообщений: 1,537
|
Спасибо XPAIN все получилось
|
04.06.2008, 07:28 | #7 |
Пользователь
Регистрация: 20.04.2008
Сообщений: 57
|
пишу фильтр
Код:
Где у меня не правильно? |
04.06.2008, 08:03 | #8 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Не вижу ничего криминального. Ты бы протрассировал бы по шагам и посмотрел бы.
I'm learning to live...
|
04.06.2008, 11:46 | #9 |
Пользователь
Регистрация: 20.04.2008
Сообщений: 57
|
Вот хоть тресни при запуске с таким фильтром пишет - Арифметические операции в выражении фильтра не поддерживаются..
Может можно иначе как то записать? Подскажите пожалуйста.. |
04.06.2008, 12:23 | #10 |
Форумчанин
Регистрация: 24.10.2007
Сообщений: 254
|
Возможно дело в кавычках
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Фильтрация данных | 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 |