Программирование на Visual Basic | Microsoft Access. Поиск по нескольким полям

В этом разделе сайта находятся примеры из сборника программ "Архив файлов на Microsoft Access". В нем рассказывается о программировании форм, отчетов, таблиц и других объектов. Используйте этот архив для изучения работы с приложением Microsoft Office Access и программированием на Visual Basic for Application. Тем кто уже знаком с VBA, используйте поиск для нахождения кодов. Наберите, например, DAO, ADO, Recordset и найдете нужную ссылку для решения проблемы с программированием

Microsoft Access. Поиск по нескольким полям

01. Есть таблица, в ней нужно провести поиск по нескольким полям. При этом одно поле зависит от другого. Как это сделать указано в это примере.

'==============================================================
' Поиск по дате
Private Sub Дата_AfterUpdate()
Dim rst As Recordset, frm As Form
    On Error GoTo 999
    Set frm = Me.формаПоиск.Form 'Выбираем форму
    Set rst = frm.RecordsetClone 'Выбираем таблицу
    
    rst.FindFirst "([Дата]=#"  Format(Me.Дата, "mm\/dd\/yyyy")  "#)"
    If rst.NoMatch = False Then
        frm.Bookmark = rst.Bookmark
        Me.Книга = rst!Книга
    Else
        MsgBox "Нет данных!"
    End If
    
    Exit Sub
999:
    MsgBox Err.Description  vbNewLine  "Введите правильно данные?"
End Sub

'==============================================================
' Начать поиск после обновления
Private Sub Книга_AfterUpdate()
    recordFind
End Sub

'==============================================================
' Поиск по дате и книге
Private Sub recordFind()
Dim rst As Recordset, frm As Form, s As String
    On Error GoTo 999
    Set frm = Me.формаПоиск.Form 'Выбираем форму
    Set rst = frm.RecordsetClone 'Выбираем таблицу
    
    s = "([Дата]=#"  Format(Me.Дата, "mm\/dd\/yyyy")  _
                  "#) and (Книга='"  Me.Книга  "')"
    rst.FindFirst s
    If rst.NoMatch = False Then
        frm.Bookmark = rst.Bookmark
    Else
        MsgBox "Нет данных!"
    End If
    
    Exit Sub
999:
    MsgBox "Введите правильно данные?"
End Sub

'==============================================================
' Поиск по шаблону
Private Sub Шаблон_AfterUpdate()
Dim rst As Recordset, frm As Form, s As String
    On Error GoTo 999
    Set frm = Me.формаПоиск.Form 'Выбираем форму
    Set rst = frm.RecordsetClone 'Выбираем таблицу
    
    rst.FindFirst "([Книга] Like '"  Me.Шаблон  "')=True"
    If rst.NoMatch = False Then
        frm.Bookmark = rst.Bookmark
    Else
        MsgBox "Нет данных!"
    End If
    Exit Sub
999:
    MsgBox "Введите правильно данные?"
End Sub

'==============================================================
' Запрос по книге
Private Sub Книга_Enter()
    Me.Книга.RowSource = "SELECT Книга FROM [1-Мои книги] WHERE (((Дата)=[Forms]![Example 01]![Дата]));"
    'Me.Книга.Requery  'Изменить запрос
End Sub

Добавить комментарий

Loading