Создание динамического запроса со значениями из формы поиска в Access

Дополнительно: требуются экспертные навыки программирования, взаимодействия и многопользовательских навыков.

Эта статья применима к файлам баз данных Microsoft Access (.mdb) или (.accdb), а также к файлу проекта Microsoft Access (.adp).

Сводка

В этой статье показано, как динамически создавать условия для строки запроса со значениями из формы поиска в Microsoft Access.

Дополнительная информация

Иногда может потребоваться создать форму, которая служит в качестве формы поиска. Вы хотите иметь возможность вводить значения в форме и динамически создавать соответствующую строку SQL. Ниже показано, как динамически создать строку запроса, которая использует метод BuildCriteria.

Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Инженеры службы поддержки Майкрософт могут помочь объяснить функциональность конкретной процедуры, но они не будут изменять эти примеры, чтобы предоставить дополнительные функциональные возможности или создать процедуры в соответствии с вашими конкретными требованиями. ВНИМАНИЕ! Если выполнить действия, описанные в этом примере, вы измените пример Northwind.mdb базы данных. Может потребоваться создать резервную копию файла Northwind.mdb и выполнить следующие действия для копии базы данных.

Пошаговый пример

  1. Запустите Access.
  2. В меню Справка наведите указатель на пункт Примеры баз данных, а затем выберите Northwind Sample Database (Пример базы данных Northwind).
  3. Откройте форму Клиенты в режиме конструктора.
  4. Добавьте в форму кнопку команды и текстовое поле, а затем задайте следующие свойства:
 Command Button
 ------------------------
 Name: cmdSearch
 Caption: Search
 OnClick: Event Procedure

Text Box
 --------------
 Name: txtSQL
 Width: 4.4583"
 Height: 1.25"
  1. Задайте для свойства OnClick кнопки команды следующую процедуру события:
Private Sub cmdSearch_Click()
    On Error Resume Next

Dim ctl As Control
    Dim sSQL As String
    Dim sWhereClause As String

'Initialize the Where Clause variable.
    sWhereClause = " Where "

'Start the first part of the select statement.
    sSQL = "select * from customers "

'Loop through each control on the form to get its value.
    For Each ctl In Me.Controls
        With ctl
            'The only Control you are using is the text box.
            'However, you can add as many types of controls as you want.
            Select Case .ControlType
                Case acTextBox
                    .SetFocus
                    'This is the function that actually builds
                    'the clause.
                    If sWhereClause = " Where " Then
                        sWhereClause = sWhereClause & BuildCriteria(.Name, dbtext, .Text)
                    Else
                        sWhereClause = sWhereClause & " and " & BuildCriteria(.Name, dbtext, .Text)
                    End If
            End Select
        End With
    Next ctl

'Set the forms recordsource equal to the new
    'select statement.
    Me.txtSQL = sSQL & sWhereClause
    Me.RecordSource = sSQL & sWhereClause
    Me.Requery

End Sub

  1. Сохраните форму и откройте ее в представлении формы.

    Обратите внимание, что при нажатии кнопки Поиск в текстовом поле txtSQL отображается запрос, созданный на основе значений в форме Customers. Кроме того, форма Customers была повторно выполнена, чтобы она отражала результаты новой строки SQL.

Ссылки

Для получения дополнительных сведений о методе BuildCriteria в Редактор Visual Basic щелкните Справка Microsoft Visual Basic в меню Справка, введите метод buildcriteria в помощнике Office или мастере ответов, а затем щелкните Поиск, чтобы просмотреть раздел.