Jak utworzyć zapytanie dynamiczne z wartościami z formularza wyszukiwania w programie Access

Zaawansowane: wymaga specjalistycznego kodowania, współdziałania i wielodostępnych umiejętności.

Ten artykuł dotyczy pliku bazy danych programu Microsoft Access (.mdb), pliku bazy danych programu Microsoft Access (.accdb) lub pliku projektu programu Microsoft Access (.adp).

Podsumowanie

W tym artykule pokazano, jak dynamicznie tworzyć kryteria dla ciągu zapytania z wartościami z formularza wyszukiwania w programie Microsoft Access.

Więcej informacji

Czasami można utworzyć formularz, który służy jako formularz wyszukiwania. Chcesz mieć możliwość wprowadzania wartości w formularzu i dynamicznego tworzenia odpowiedniego ciągu SQL. W poniższych krokach pokazano, jak dynamicznie utworzyć ciąg zapytania, który używa metody BuildCriteria.

Firma Microsoft podaje przykłady programowania tylko dla celów ilustracyjnych, nie udzielając żadnej rękojmi, wyrażonej wprost ani dorozumianej, w tym także, ale nie tylko, dorozumianej rękojmi co do przydatności handlowej lub do określonych celów. W tym artykule zakłada się, że czytelnik zna demonstrowany język programowania oraz narzędzia używane do tworzenia i debugowania procedur. Inżynierowie pomocy technicznej firmy Microsoft mogą pomóc w objaśnieniu funkcjonalności określonej procedury, ale nie zmodyfikują tych przykładów w celu zapewnienia dodatkowych funkcji lub procedur konstruowania w celu spełnienia określonych wymagań. UWAGA: Jeśli wykonaj kroki opisane w tym przykładzie, zmodyfikujesz przykładową bazę danych Northwind.mdb. Możesz utworzyć kopię zapasową pliku Northwind.mdb i wykonać te kroki na kopii bazy danych.

Przykład krok po kroku

  1. Uruchom dostęp.
  2. W menu Pomoc wskaż pozycję Przykładowe bazy danych, a następnie kliknij pozycję Przykładowa baza danych Northwind.
  3. Otwórz formularz Klienci w widoku projektowym.
  4. Dodaj przycisk polecenia i pole tekstowe do formularza, a następnie ustaw następujące właściwości:
 Command Button
 ------------------------
 Name: cmdSearch
 Caption: Search
 OnClick: Event Procedure

Text Box
 --------------
 Name: txtSQL
 Width: 4.4583"
 Height: 1.25"
  1. Ustaw właściwość OnClick przycisku polecenia na następującą procedurę zdarzenia:
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. Zapisz formularz, a następnie otwórz go w widoku Formularz.

    Pamiętaj, że po kliknięciu przycisku polecenia Wyszukaj pole tekstowe txtSQL odzwierciedla zapytanie utworzone na podstawie wartości w formularzu Klienci. Ponadto formularz Klienci został przepytany tak, aby odzwierciedlał wyniki nowego ciągu SQL.

Informacje

Aby uzyskać więcej informacji na temat metody BuildCriteria, w Redaktor Visual Basic kliknij pozycję Microsoft Visual Basic Help w menu Pomoc, wpisz metodę buildcriteria w Asystentze pakietu Office lub Kreatorze odpowiedzi, a następnie kliknij pozycję Wyszukaj, aby wyświetlić temat.