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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2017, 11:04   #1
dimkoss
Пользователь
 
Регистрация: 06.02.2016
Сообщений: 35
По умолчанию Как правильно использовать Filter?

Раньше делал фильтрацию в DBGrid посылая SQL запрос на каждое изменение Edit.
Сейчас решил попробовать filter, но так и не получилось добиться адекватной работы.
Редко находит нужно значение. Всегда есть посторонние значения.
Хотелось бы пример использования фильтра с правильной работой.
Заранее спасибо.
dimkoss вне форума Ответить с цитированием
Старый 29.05.2017, 11:36   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от dimkoss Посмотреть сообщение
Раньше делал фильтрацию в DBGrid посылая SQL запрос на каждое изменение Edit.
и чем не устраивает?

Цитата:
Сообщение от dimkoss Посмотреть сообщение
Сейчас решил попробовать filter, но так и не получилось добиться адекватной работы.
покажите, что делали и в чём заключается неадекватная работа?
А вообще,
если тип полей, по которым пытались написать условия фильтрации типа дата/время, то правильная работа не гарантируется...

Цитата:
Сообщение от dimkoss Посмотреть сообщение
Хотелось бы пример использования фильтра с правильной работой.
Код:
Датасет.Filter := 'условие фильтрации';
Датасет.Filtered:=true;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.05.2017, 12:31   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
если тип полей, по которым пытались написать условия фильтрации типа дата/время, то правильная работа не гарантируется...
Почему? Просто несколько дополнительных телодвижений выполнить придётся
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 29.05.2017, 13:34   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
если тип полей, по которым пытались написать условия фильтрации типа дата/время, то правильная работа не гарантируется...
подтверждаю, в этом случае спасет OnFilterRecord. И вообще этот Filter для простейших условий. Хотя бы такое всунуть в него 'a=1 and (b=10 or b=15)', можно, но не так в лоб
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 29.05.2017 в 13:37.
Аватар вне форума Ответить с цитированием
Старый 29.05.2017, 13:36   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
подтверждаю, в этом случае спасет OnFilterRecord
вот тут согласен.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.06.2017, 19:42   #6
dimkoss
Пользователь
 
Регистрация: 06.02.2016
Сообщений: 35
По умолчанию

Все таки Filter, ничем не отличается от WHERE, значит смысла использовать его нету.
dimkoss вне форума Ответить с цитированием
Старый 04.06.2017, 19:48   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Все таки Filter, ничем не отличается от WHERE, значит смысла использовать его нету.
Отличается и еще как. Запрос вместе с условием из where целиком и полностью выполняет СУБД, условие в filter отрабатывается датасетом уже на клиенте. А смысл использования зависит от конкретной ситуации, иногда и filter полезен
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.06.2017, 23:12   #8
dimkoss
Пользователь
 
Регистрация: 06.02.2016
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Отличается и еще как. Запрос вместе с условием из where целиком и полностью выполняет СУБД, условие в filter отрабатывается датасетом уже на клиенте. А смысл использования зависит от конкретной ситуации, иногда и filter полезен
т.е. фильтр должен работать намного быстрее?
dimkoss вне форума Ответить с цитированием
Старый 04.06.2017, 23:20   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Наоборот обычно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно использовать переменные? romasimeiz C# (си шарп) 4 05.03.2014 16:17
Как правильно использовать MySQL EndoCrinolog PHP 6 24.08.2012 21:08
Как правильно использовать MonthCalendar Shanuzina Компоненты Delphi 1 04.03.2010 11:58
как правильно использовать OR AND mpdasa Общие вопросы Delphi 2 19.01.2010 17:30
Как правильно использовать ComboBox Pirotexnik Общие вопросы Delphi 6 26.03.2009 23:30