![]() |
|
|
![]()
|
|
| User |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 5.11.2004 Репутация: нет Всего: нет |
На форме присутствуют компоненты DBGrid1, Table1, DataSource1, Edit1. Я написал следующий код для фильтрации в DBGrid1:
procedure TForm1.Edit1Change(Sender: TObject); begin if Length(Edit1.Text)>0 then Table1.Filtered:=true else Table1.Filtered:=false; Table1.Filter:='Famil>'''+FindEdit.Text+''''; end; Проблема вот в чем. Разные глюки идут. Подскажите как лучше осуществить фильтрацию. P.S. 1). Токо прошу подсказать при условии что Qyeru1 на форму не добовлять. 2). Или как грамотно добавить Qyeru1 и подключить как для осуществления фильтрации. |
|||
|
||||
| Mr.Picwick |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 23.3.2004 Репутация: нет Всего: нет |
По-моему надо сначало задавать фильтр, а потом свойство Filtered в True или False
|
|||
|
||||
| User |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 5.11.2004 Репутация: нет Всего: нет |
Попробую правда не знаю что получиться? А как еще можно задать фильтрацию кроме указанного способа, подскажите? Лучше с примером.
|
|||
|
||||
| Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Ну как вариант, чтобы не заптаться с опострофами:
|
||||
|
|||||
| User |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 5.11.2004 Репутация: нет Всего: нет |
У меня при всех вариантах что то фильтруется, но при этом фигня какаято выскакивает. А именно. Когда я отфилтровал по первому значению все ОК. Когда фильтрую по второму то остается и первое и второе отфильтрованное значение как будто фильтрация предыдущих значений гдето сохраняется. Люди - программисты помогите справиться с этой бедой. !! Плиз!
|
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Покажи код двух фильтраций
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
Скорее всего после первой фильтрации ты не приводишь таблицу к первоначальному виду и фильтруешь уже оставшиеся записи. Или нет?
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
bFilterFilials - глобальная переменная
если true, то можно фильтровать procedure TfmMain.tZayFilterRecord(DataSet: TDataSet; var Accept: Boolean); begin if bFilterFilials then Accept := DataSet['ZFilial'] = lcbFilials.KeyValue; end; procedure TfmMain.tZayFilterRecord(DataSet: TDataSet; var Accept: Boolean); begin if DataSet['ZFilial'] = 'филиал' then Accept := true; end; если Accept = true, то запись попадет в набор данных и так попадут в набор данных все записи, которые имеют значение 'филиал' в поле 'ZFilial' это событие срабатывает тогда, когда ты выполняешь фильтрацию, причем в свойсве Filter не обязательно должно быть выражение фильтрации, просто выполняешь Код Table1.Filtered:=True т.е. здесь можно фильтровать записи с помощью язывка высокого уровня, а не пятью операторами SQL http://forum.vingrad.ru/index.php?showtopi...ead=1&hl=фильтр |
|||
|
||||
| Коця |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 13.2.2005 Репутация: нет Всего: нет |
Вот и у меня то-же самое... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Коця, покажи код
|
|||
|
||||
| Коця |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 13.2.2005 Репутация: нет Всего: нет |
procedure TForm1.Edit1Change(Sender: TObject);
begin Table1.Filtered:=false; Table1.Filter:='FIO>'''+Edit1.Text+''''; if Length(Edit1.Text)>0 then Table1.Filtered:=true else Table1.Filtered:=false; end; |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
динамическая фильтрация
Это сообщение отредактировал(а) dsergey - 17.2.2005, 16:25 |
|||
|
||||
| Коця |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 13.2.2005 Репутация: нет Всего: нет |
чтоб при удалении символов с Едита фильтрация отменялать нада добавить
procedure TListClients.Edit1Change(Sender: TObject); begin Form1.Table1.Filtered:=False; Form1.Table1.Filter:='LAST_NAME = '+QuotedStr(Edit1.Text+'*'); if Length(Edit1.Text)>0 then Table1.Filtered:=true else Table1.Filtered:=false; end; |
|||
|
||||
| User |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 5.11.2004 Репутация: нет Всего: нет |
А можно просто запросами, правда если у тебя таблица подключена через Query
begin Query1.Active :=False; Query1.TextSQL :='SELECT Телефон FROM NAME WHERE Телефон =:Edit1.Text'; Query1.Active :=True; end; Писал по памяти, так как дельфи под рукой нет, возможны ошибки. Добавлено @ 11:12 Да забыл сказать, в самом Query нужно очищать список! Query1.SQLText.Create; - вроде так |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |