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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2017, 09:40   #1
Krayshon
Пользователь
 
Регистрация: 22.03.2016
Сообщений: 12
По умолчанию Фильтр на форме

Столкнулся с проблемой, когда попытался настроить фильтр на форме. В идеале в ComboBox нужно выбрать поле фильтра, затем ввести данные в TextBox и нажатием кнопки фильтровать.

Код:
Dim strFind As String
Dim strFind2 As String
    
        strFind = Nz(Me.Поле14.Text, "")
        strFind2 = Nz(Me.ПолеСоСписком5.Text, "")
        If strFind <> "" Then
        
            Forms![Форма1]![Форма2].Form.Filter = " strFind2 Like '*" & strFind & "*'"
            Forms![Форма1]![Форма2].Form.FilterOn = True
            
        Else
        
            Forms![Форма1]![Форма2].Form.FilterOn = False
            Me.Поле14.SetFocus
            
        End If
Форма 1 - та на которой расположены поля и кнопки, Форма 2 - табличная форма на которой нужно фильтровать данные.
После нажатия на кнопку не происходит ничего, ни ошибок, ни результата.

Последний раз редактировалось Arigato; 20.04.2017 в 11:00.
Krayshon вне форума Ответить с цитированием
Старый 11.04.2017, 10:35   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Ето верно?
Код:
" strFind2 Like '*" & strFind & "*'"
не должно быть
Код:
"[" &  strFind2 & "] Like '*" & strFind & "*'"
?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 11.04.2017, 10:47   #3
Krayshon
Пользователь
 
Регистрация: 22.03.2016
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Ето верно?
Код:
" strFind2 Like '*" & strFind & "*'"
не должно быть
Код:
"[" &  strFind2 & "] Like '*" & strFind & "*'"
?
Возможно Вы правы, но из этого вытекает другая проблема. Скорее всего ошибки еще и в строке:
Цитата:
strFind2 = Nz(Me.ПолеСоСписком5.Text, "")
Аксесс не воспринимает strFind2 как поле в таблице. Не пойму как исправить.
Krayshon вне форума Ответить с цитированием
Старый 11.04.2017, 11:07   #4
Krayshon
Пользователь
 
Регистрация: 22.03.2016
Сообщений: 12
По умолчанию

Решил проблему, возможно кому-нибудь пригодится такой фильтр, выкладываю окончательный вариант.
Цитата:
Dim strFind As String
Dim strFind2 As String

strFind = Nz(Me.Поле14.Text, "")
strFind2 = Nz(Me.ПолеСоСписком5, "")
If strFind <> "" Then

Forms![Форма1]![Форма2].Form.Filter = " [" & strFind2 & "] Like '*" & strFind & "*'"
Forms![Форма1]![Форма2].Form.FilterOn = True

Else

Forms![Форма1]![Форма2].Form.FilterOn = False
Me.Поле14.SetFocus
Me.Поле14.SelStart = 200
End If
Спасибо,Aleksandr H., за помощь.
Krayshon вне форума Ответить с цитированием
Старый 12.04.2017, 13:59   #5
Krayshon
Пользователь
 
Регистрация: 22.03.2016
Сообщений: 12
По умолчанию

По ходу работы выяснилось, что фильтр работает не совсем так как хотелось бы, если элементом фильтра является столбец с выпадающим списком, то написание текста в поле не приводит к желаемому результату, фильтр работает только если указать уникальный ключ записи из выпадающего списка. Как сделать так, что бы он сравнивал TextBox с текстом в поле, а не с УК?
Krayshon вне форума Ответить с цитированием
Старый 12.04.2017, 14:13   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Krayshon Посмотреть сообщение
Как сделать так, что бы он сравнивал TextBox с текстом в поле, а не с УК?
Для тестирования советов другими форумчанами, можна тестовую базу приложить.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 12.04.2017, 14:50   #7
Krayshon
Пользователь
 
Регистрация: 22.03.2016
Сообщений: 12
По умолчанию

Если выбрать из списка поле пол, то поиск будет работать правильно, если вводить 1,2 (ук записей), а не текст.
Вложения
Тип файла: rar Тест.rar (25.4 Кб, 28 просмотров)
Krayshon вне форума Ответить с цитированием
Старый 12.04.2017, 21:44   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Private Sub Поле3_Change()

On Error GoTo Поле3_Err
    Dim strFind As String
    Dim strFind2 As String
    Dim rs As Recordset
    Dim s As String
        strFind = Nz(Me.Поле3.Text, "")
        strFind2 = Nz(Me.ПолеСоСписком1, "")
        
        If strFind <> "" Then
            If strFind2 Like "Пол" Then
                s = "SELECT КОД FROM Принадлежность WHERE [Пол] like '*" & strFind & "*'"
                Set rs = CurrentDb.OpenRecordset(s)
                strFind = rs.Fields("Код")
                Set rs = Nothing
            End If
            Forms![Общая]![Форма 1].Form.Filter = " [" & strFind2 & "] Like '*" & strFind & "*'"
            Forms![Общая]![Форма 1].Form.FilterOn = True
            Me.Поле3.SelStart = 200
        Else
        
            Forms![Общая]![Форма 1].Form.FilterOn = False
            Me.Поле3.SetFocus
            
        End If
Поиск_Exit:

Exit Sub

Поле3_Err:

    Forms![Общая]![Форма 1].Form.FilterOn = False
    Me.Поле3 = Null
    MsgBox "Совпадений не обнаружено!", vbCritical, "Поиск"
    Resume Поиск_Exit
    
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 17.04.2017, 09:48   #9
Krayshon
Пользователь
 
Регистрация: 22.03.2016
Сообщений: 12
По умолчанию

И если таких полей как "Пол" 11, то для каждого создавать блок If?
Krayshon вне форума Ответить с цитированием
Старый 18.04.2017, 10:30   #10
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

можете через Select Case делать
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтр при загрузке в подчиненной форме Access nikolaynn2008 Microsoft Office Access 4 12.06.2016 13:23
Множественный фильтр в форме. Rom1k06 Microsoft Office Access 0 07.12.2010 09:02
Каскадный фильтр на форме, как реализовать? ipcp Microsoft Office Access 1 09.04.2010 19:42
фильтр ввода в форме Denni Microsoft Office Access 0 27.03.2009 14:58
Фильтр в форме не работает. Access'07 Talia Microsoft Office Access 7 15.01.2008 13:54