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

Avancerat: Kräver expertkodning, samverkan och färdigheter för flera användare.

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

Sammanfattning

Den här artikeln visar hur du dynamiskt skapar kriterier 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 lämplig 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. Microsofts supporttekniker kan hjälpa till att förklara funktionerna i en viss procedur, men de ändrar inte dessa exempel för att tillhandahålla ytterligare funktioner eller konstruktionsprocedurer för att uppfylla dina specifika krav. VARNING! Om du följer stegen i det här exemplet ändrar du exempeldatabasen Northwind.mdb. Du kanske vill säkerhetskopiera Northwind.mdb-filen och följa de här stegen på en kopia av databasen.

Steg-för-steg-exempel

  1. Starta åtkomst.
  2. hjälpmenyn pekar du på Exempeldatabaser och klickar sedan på Northwind Sample Database.
  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. Ange egenskapen OnClick 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 i formulärvyn.

    Observera att när du klickar på kommandoknappen Sök visar textrutan txtSQL frågan som skapades från värdena i formuläret Kunder. Formuläret Kunder har också frågats om så att det återspeglar resultatet av den nya SQL-strängen.

Referenser

Om du vill ha mer information om metoden BuildCriteria i Visual Basic-Editor klickar du på Microsoft Visual Basic-hjälpen på hjälpmenyn, skriver buildcriteria-metoden i Office-assistenten eller svarsguiden och klickar sedan på Sök för att visa ämnet.