Skapa en dynamisk fråga med värden från ett sökformulär i Access

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

Avancerat: Kräver expertkodning, interoperabilitet och fleranvändarfärdigheter.

Den här artikeln gäller antingen en Microsoft Access-databasfil (.mdb) eller en Microsoft Access-databasfil (.accdb) och en Microsoft Access-projektfil (.adp).

Sammanfattning

I den här artikeln visar vi hur du dynamiskt skapar villkor för en frågesträng med värden från ett sökformulär i Microsoft Access.

Mer information

Ibland kanske du vill skapa ett formulär som fungerar som ett sökformulär. Du vill kunna ange värden i formuläret och dynamiskt skapa rätt SQL-sträng. Följande steg visar hur du dynamiskt skapar en frågesträng som använder metoden BuildCriteria.

Microsoft tillhandahåller programmeringsexempel enbart i förklarande syfte och gör inga utfästelser, varken uttryckligen eller underförstått. Detta omfattar men begränsas inte till underförstådd garanti för säljbarhet eller lämplighet för ett visst syfte. I denna artikel förutsätts att du känner till det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsoft-supporttekniker kan förklara funktionaliteten i en viss procedur, men de ändrar inte de här exemplen för att ge ytterligare funktioner eller skapa procedurer som uppfyller dina specifika krav. VARNING: Om du följer stegen i det här exemplet ändrar du exempeldatabasen Northwind.mdb. Du kanske vill backa Northwind.mdb-filen och följa de här stegen på en kopia av databasen.

Steg för steg-exempel

  1. Starta Access.
  2. hjälpmenyn pekar du på Exempeldatabaser och klickar sedan på Northwind-exempeldatabas.
  3. Öppna formuläret Kunder i designvyn.
  4. Lägg till en kommandoknapp och en textruta i formuläret och ange sedan följande egenskaper:
 Command Button
 ------------------------
 Name: cmdSearch
 Caption: Search
 OnClick: Event Procedure

Text Box
 --------------
 Name: txtSQL
 Width: 4.4583"
 Height: 1.25"
  1. Ställ in egenskapen VidKlickning för kommandoknappen till följande händelseprocedur:
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. Spara formuläret och öppna det sedan i formulärvyn.

    Observera att när du klickar kommandoknappen Sök återspeglar textrutan txtSQL frågan som skapades utifrån värdena i formuläret Kunder. Dessutom har formuläret Customers blivit på nytt så att det återspeglar resultatet av den nya SQL-strängen.

Referenser

Om du vill ha mer information om metoden BuildCriteria går du till Visual Basic Editor och klickar på Hjälp om Microsoft Visual Basic på menyn Hjälp, skriver byggkriteriskt sätt i Office-assistenten eller Svarsguiden och klickar sedan på Sök för att visa avsnittet.