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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2011, 14:14   #1
satka
Форумчанин
 
Регистрация: 17.07.2011
Сообщений: 145
По умолчанию Поиск с фильтром

На этом форуме кто-то выкладывал Пример поиска с фильтром (тему найти не смог, видимо ослеп), где ленточная форма фильтровалась на изменение поля, решил сделать тоже самое и столкнулся вот какой проблемой.
После применения фильтра
Код:
Private Sub Filtr()
Dim rfs, afs As String
afs = ""
Me.Refresh
If Len(fstreet.value) > 0 Then
    rfs = fstreet
    afs = afs & " and TabMainAdress.Street like '*" & rfs & "*'"
End If

Me.Filter = afs
Me.FilterOn = True
End Sub
возвращаюсь из процедуры фильтра в процедуру изменения поля
Код:
Private Sub fstreet_Change()
Dim fs As String
fs = "" & fstreet
Call Filtr
Me.fstreet.SelStart = Len(fs) + 1
End Sub
где передвигается фокус на конец поля (Me.fstreet.SelStart) , если в ленточной форме ничего не нашло, то фокус переводится на кнопку расположенную ниже этого поля и пишет что не возможно обратиться к методу элемента, пока на этот элемент не установлен фокус ввода. А в том примере, что выкладывали этого не происходит. Поэтому вопрос WTF?

Последний раз редактировалось satka; 14.10.2011 в 14:23.
satka вне форума Ответить с цитированием
Старый 15.10.2011, 10:10   #2
satka
Форумчанин
 
Регистрация: 17.07.2011
Сообщений: 145
По умолчанию

Up Ну что никто не знает как решит эту проблему?
satka вне форума Ответить с цитированием
Старый 17.10.2011, 10:19   #3
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Я что-то не совсем понял вопрос. Вылаживайте пример посмотрим.
gluk_fm вне форума Ответить с цитированием
Старый 18.10.2011, 01:16   #4
satka
Форумчанин
 
Регистрация: 17.07.2011
Сообщений: 145
По умолчанию

Вылажить не смогу. Поясню (хотя и так вроде всё ясно):
пишем что-то в поле fstreet, происходит событие на продцедуру fstreet_Change, как видно из приведённого кода вызывается функция Filtr, после применения фильтра и окончания работы функции, возвращаемся в продцедуру fstreet_Change, где должна выполниться строка
Me.fstreet.SelStart = Len(fs) + 1
и вот тут, если после применения фильтра в ленточной форме нет записей, то происходит описанная выше ошибка (полагаю потому что, фокус с поля fstreet переходит на расположеную ниже этого поля кнопку), если записи есть то эта строка выполняется корректно, перенося курсор ввода в конец текста. Яснее не могу. Вопрос:
Почему так происходит? И как с этим бороться?
satka вне форума Ответить с цитированием
Старый 18.10.2011, 12:15   #5
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Допишите поле проверки что то вроде if Len(fs)>0 then stop or end sub
gluk_fm вне форума Ответить с цитированием
Старый 21.10.2011, 06:35   #6
satka
Форумчанин
 
Регистрация: 17.07.2011
Сообщений: 145
По умолчанию

Дописать в каком месте? И в чём смысл условия?
satka вне форума Ответить с цитированием
Старый 21.10.2011, 12:48   #7
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

С вышеуказанного у меня возникло ощущение, что в поле которое Вы пытаетесь перейти значение по умолчанию берёт данные с таблицы которая у вас выводится. И когда значение нулевое выдаёт ошибку так как не возможно принять нулевой или ошибочный параметр. Для этого я и предлогаю вам дописать условие проверки значения и в случае если оно нулевое или ошибка не переходить на следующее поле.
gluk_fm вне форума Ответить с цитированием
Старый 22.10.2011, 08:12   #8
satka
Форумчанин
 
Регистрация: 17.07.2011
Сообщений: 145
По умолчанию

Поле fstreet является свободным, и нужно только для ввода даных для фильтра, который применяется для фильтрации данных запроса, который выводит записи в ленточную форму, поле находится в заголовке этой ленточной формы
Такой вот пример выкладывал кто-то, в чём разница с моими записями, там если ничего не выводится, то ничего и не происходит, у меня же выскакивает вышеозначеная ошибка
Вложения
Тип файла: rar Пример_поиска_с_фильтром.rar (64.4 Кб, 31 просмотров)

Последний раз редактировалось satka; 22.10.2011 в 08:15.
satka вне форума Ответить с цитированием
Старый 24.10.2011, 12:25   #9
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Попробуйте через Ф8 пройти по модулю изменения. Я на 99% уверен что параметр fstreet или null or Error..... С того что я видел можно сделать вывод что у Вас проблеима в запросе..... я его не видел но есть такое предположение что у Вас в запросе стоит просто условие отбора с формы:
"*" & [forms]![tt]![value] & "*"

а лучше проставить как вариант:
iif(iserrror([forms]![tt]![value])=-1;"*";iif(isnull([forms]![tt]![value])=-1;"*";"*" & [forms]![tt]![value] & "*")
gluk_fm вне форума Ответить с цитированием
Старый 28.10.2011, 17:28   #10
НаталиКУС
Новичок
Джуниор
 
Регистрация: 27.10.2011
Сообщений: 2
По умолчанию

Помогите, пожалусто!!!

Мне необходимо реализовать следующий действие:

Нужно ввести в Поле3 значение, нажать на кнопку и должна вылезти новая форма в которой информация будет отфильтрована по значению в Поле3.

В программном коде я написала следующее:

Private Sub Кнопка20_Click()
Me.Поле3 = ""
Me.Filter = ""
Me.FilterOn = True
DoCmd.OpenForm "РАСТЕНИЕ"

End Sub

Но форма открывается но информация в ней не фильтруется выдаются все записи.

Подскажите что я написала не так?
НаталиКУС вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с фильтром nervniy БД в Delphi 4 19.08.2010 06:36
Проблема с фильтром в ADOTable son_of_koshi Помощь студентам 2 04.08.2010 14:21
Работаем с фильтром... nikolai_P Microsoft Office Excel 7 13.03.2009 14:04
Combobox с фильтром Legat Общие вопросы Delphi 4 10.02.2009 14:51