Vytvoření dynamického dotazu s hodnotami z vyhledávacího formuláře v Accessu

Pokročilé: Vyžaduje odborné kódování, interoperabilitu a víceuživatelské dovednosti.

Tento článek se vztahuje buď na soubor databáze Microsoft Access (.mdb), nebo na soubor databáze Microsoft Access (.accdb) a na soubor projektu (.adp) aplikace Microsoft Access.

Souhrn

V tomto článku se dozvíte, jak dynamicky vytvářet kritéria pro řetězec dotazu s hodnotami z vyhledávacího formuláře v Microsoft Accessu.

Další informace

Někdy můžete chtít vytvořit formulář, který slouží jako vyhledávací formulář. Chcete mít možnost zadávat hodnoty ve formuláři a dynamicky vytvářet odpovídající řetězec SQL. Následující kroky ukazují, jak dynamicky vytvořit řetězec dotazu, který používá metodu BuildCriteria.

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo odvozené, včetně, bez omezení, odvozených záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Technici podpory Microsoftu vám můžou pomoct vysvětlit funkčnost konkrétní procedury, ale tyto příklady nebudou upravovat tak, aby poskytovaly přidané funkce nebo sestavují postupy tak, aby splňovaly vaše konkrétní požadavky. UPOZORNĚNÍ: Pokud budete postupovat podle kroků v tomto příkladu, upravíte ukázkovou databázi Northwind.mdb. Můžete chtít zálohovat soubor Northwind.mdb a postupovat podle těchto kroků v kopii databáze.

Podrobný příklad

  1. Spusťte Access.
  2. V nabídce Nápověda přejděte na Ukázkové databáze a potom klikněte na Ukázková databáze Northwind.
  3. Otevřete formulář Zákazníci v návrhovém zobrazení.
  4. Do formuláře přidejte příkazové tlačítko a textové pole a nastavte následující vlastnosti:
 Command Button
 ------------------------
 Name: cmdSearch
 Caption: Search
 OnClick: Event Procedure

Text Box
 --------------
 Name: txtSQL
 Width: 4.4583"
 Height: 1.25"
  1. Nastavte vlastnost OnClick příkazového tlačítka na následující proceduru události:
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. Uložte formulář a otevřete ho ve formulářovém zobrazení.

    Všimněte si, že po kliknutí na příkazové tlačítko Hledat se v textovém poli txtSQL zobrazí dotaz, který byl vytvořen z hodnot ve formuláři Zákazníci. Formulář Zákazníci se také znovu dotazoval, aby odrážel výsledky nového řetězce SQL.

Odkazy

Další informace o metodě BuildCriteria v Editor jazyka Visual Basic klepněte v nabídce Nápověda pro Microsoft Visual Basic, zadejte buildcriteria method v Pomocníkovi Office nebo v Průvodci odpověďmi a potom kliknutím na tlačítko Hledat zobrazte téma.