Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
GafarovIS
21 / 20 / 0
Регистрация: 10.10.2014
Сообщений: 778
1

Как отследить изменение фильтров в форме?

05.09.2016, 23:00. Просмотров 1031. Ответов 6
Метки нет (Все метки)

Здравствуйте!
Подскажите пожалуйста как отследить, что пользователь установил новый фильтр или удалил его.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2016, 23:00
Ответы с готовыми решениями:

Как отследить Undo на форме?
Здравствуйте! Подскажите пожалуйста, возможно ли отследить Undo на форме?

Как отследить отсутствие записей в форме?
Здравствуйте! Подскажите, как отследить, что в подтаблице нет записей? В моей подтаблице есть...

Как отследить удаление в форме adp-проекта?
В процессе перевода своего файл-серверного проекта (mdb-accdb) на сиквел (adp) столкнулся со...

Как отследить изменение в таблице бд в режиме реального времени
Уважаемые форумчане! Я вновь к вам за очередным советом. Пожалуйста подскажите какой лучше...

Создание двух фильтров в форме
УВ коллеги! Прошу помочь мне разобраться как сделать в форме два фильтра (комбинированный...

6
mobile
Эксперт MS Access
25615 / 13693 / 2944
Регистрация: 28.04.2012
Сообщений: 15,000
05.09.2016, 23:21 2
Лучший ответ Сообщение было отмечено GafarovIS как решение

Решение

Используйте событие формы Применение фильтра (ApplyFilter). Отслеживайте свойства формы Filter и FilterOn. Любой фильтр установленный на форме, а также удаленный, отразится в этом событии (если конечно используется инструмент Filter, а не изменение источника)
Visual Basic
1
2
3
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
    Debug.Print Me.Filter, Me.FilterOn
End Sub
1
GafarovIS
21 / 20 / 0
Регистрация: 10.10.2014
Сообщений: 778
06.09.2016, 00:12  [ТС] 3
Цитата Сообщение от mobile Посмотреть сообщение
ApplyFilter
Спасибо!
Что бы я без Вас делал...
0
texnik-san
шапоклякистка 8-го дня
3641 / 2202 / 390
Регистрация: 26.06.2015
Сообщений: 4,648
Записей в блоге: 1
06.09.2016, 07:31 4
Если мне не изменяет память, то именно в этом событии нужно смотреть не столько на Me.FilterOn, сколько именно на ApplyType. Только по ApplyType можно понять, каким СТАНЕТ значение Me.FilterOn после того, как это событие отработает. Me.FilterOn показывает текущее состояние фильтра, ДО завершения выполнения того действия с фильтром, которое выбрал пользователь. А оно может остаться таким же или поменяться.
1
VinniPuh
6942 / 4242 / 469
Регистрация: 27.03.2013
Сообщений: 15,604
06.09.2016, 07:36 5
А я бы наверное еще какую ни то большущую надпись в пол формы выводил, с сообщением о примененном фильтре..
Сразу видно будет и не потеряется.
0
mobile
Эксперт MS Access
25615 / 13693 / 2944
Регистрация: 28.04.2012
Сообщений: 15,000
06.09.2016, 09:11 6
Цитата Сообщение от texnik-san Посмотреть сообщение
нужно смотреть не столько на Me.FilterOn, сколько именно на ApplyType. Только по ApplyType можно понять, каким СТАНЕТ значение Me.FilterOn после того, как это событие отработает. Me.FilterOn показывает текущее состояние фильтра, ДО завершения выполнения того действия с фильтром, которое выбрал пользователь. А оно может остаться таким же или поменяться.
Применение параметра ApplyType достаточно подробно описано в хелпе. У параметра ApplyType есть всего 3 значения
Цитата Сообщение от Великий Хелп
Константа Значение
acShowAllRecords 0
acApplyFilter 1
acCloseFilterWindow 2
Процедура обработки события Применение фильтра (ApplyFilter) используется для вывода на экран или скрытия, а также для включения или отключения определенных элементов управления в форме при применении или удалении фильтра. Например, когда к форме «Заказы» применяется фильтр, отбирающий только оплаченные заказы, можно сделать скрытыми поля «Сумма», «Налог» и «Итого», если аргумент «ApplyType» имеет значение acApplyFilter, и снова вывести их на экран, если «ApplyType» имеет значение acShowAllRecords.

Допускается также использование процедуры обработки события Применение фильтра (ApplyFilter) для отмены действий, выполняемых при возникновении события Фильтрация (Filter). Это особенно полезно, если пользователь, не создав новый фильтр, закрывает окно фильтра при значении аргумента «ApplyType» acCloseFilterWindow.
Помимо указанных ситуаций я вижу более или менее подходящее применение ApplyType для случая когда юзер выбрал фильтр полностью скрывающий все записи и отреагировать на ситуацию, например дать мсгбокс, чтобы старушка не упала в обморок от того, что "все испортила" Или противоположная ситуация - после применения фильтра набор записей не изменился.
А в остальном применение ApplyType не очень частое, практически покрывается анализом фильтра и фильтерон.
1
texnik-san
шапоклякистка 8-го дня
3641 / 2202 / 390
Регистрация: 26.06.2015
Сообщений: 4,648
Записей в блоге: 1
06.09.2016, 10:46 7
mobile, я не предлагаю ApplyType использовать, т.е. присваивать ему какое-то значение. Я говорю, что его значение нужно тоже проверить, чтобы понять, применен в форме фильтр или нет. Потому что при пользовательской фильтрации значение Me.FilterOn меняется аж после завешения выполнения процедуры Form_ApplyFilter.

В частности, при ApplyType = 0 после завершения процедуры форма станет НЕ отфильтрована, даже если внутри процедуры значение Me.FilterOn было True. См. вложенный пример: форма откроется с примененным фильтром. Попробуйте фильтр снять - сообщение покажет, что Me.FilterOn = True. Тем не менее, после завершения работы этой процедуры форма станет как раз НЕ отфильтрована.

Т.е. именно внутри процедуры Form_ApplyFilter на значение Me.FilterOn опираться нельзя - оно не окончательное.
В обработчиках всех остальных событий - Me.FilterOn адекватно показывает состояние фильтра формы.
2
Вложения
Тип файла: rar ApplyType.rar (33.1 Кб, 4 просмотров)
06.09.2016, 10:46
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2016, 10:46

Несколько фильтров по значению в табличной форме
Access 2010. Есть табличная форма, доступная только для просмотра. В этой форме пользователи должны...

Количество записей в леточной форме после применения фильтров
Приветствую как можно узнать кол-во записей в ленточной форме, после применения фильтров?...

Как ввести пароль на изменение данных на форме
Если изменить данные в форме в поле Название и оно автоматически изменилось в таблице, то есть если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.