Создание динамического запроса со значениями из формы поиска в Access
Дополнительно: требуются экспертные навыки программирования, взаимодействия и многопользовательских навыков.
Эта статья применима к файлам баз данных Microsoft Access (.mdb) или (.accdb), а также к файлу проекта Microsoft Access (.adp).
Сводка
В этой статье показано, как динамически создавать условия для строки запроса со значениями из формы поиска в Microsoft Access.
Дополнительная информация
Иногда может потребоваться создать форму, которая служит в качестве формы поиска. Вы хотите иметь возможность вводить значения в форме и динамически создавать соответствующую строку SQL. Ниже показано, как динамически создать строку запроса, которая использует метод BuildCriteria.
Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Инженеры службы поддержки Майкрософт могут помочь объяснить функциональность конкретной процедуры, но они не будут изменять эти примеры, чтобы предоставить дополнительные функциональные возможности или создать процедуры в соответствии с вашими конкретными требованиями. ВНИМАНИЕ! Если выполнить действия, описанные в этом примере, вы измените пример Northwind.mdb базы данных. Может потребоваться создать резервную копию файла Northwind.mdb и выполнить следующие действия для копии базы данных.
Пошаговый пример
- Запустите Access.
- В меню Справка наведите указатель на пункт Примеры баз данных, а затем выберите Northwind Sample Database (Пример базы данных Northwind).
- Откройте форму Клиенты в режиме конструктора.
- Добавьте в форму кнопку команды и текстовое поле, а затем задайте следующие свойства:
Command Button
------------------------
Name: cmdSearch
Caption: Search
OnClick: Event Procedure
Text Box
--------------
Name: txtSQL
Width: 4.4583"
Height: 1.25"
- Задайте для свойства 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
Сохраните форму и откройте ее в представлении формы.
Обратите внимание, что при нажатии кнопки Поиск в текстовом поле txtSQL отображается запрос, созданный на основе значений в форме Customers. Кроме того, форма Customers была повторно выполнена, чтобы она отражала результаты новой строки SQL.
Ссылки
Для получения дополнительных сведений о методе BuildCriteria в Редактор Visual Basic щелкните Справка Microsoft Visual Basic в меню Справка, введите метод buildcriteria в помощнике Office или мастере ответов, а затем щелкните Поиск, чтобы просмотреть раздел.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по