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 anvisningarna 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
- Starta Access.
- På hjälpmenyn pekar du på Exempeldatabaser och klickar sedan på Northwind-exempeldatabas.
- Öppna formuläret Kunder i designvyn.
- 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"
- 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
Spara formuläret och öppna det sedan i formulärvyn.
Observera att när du klickar på 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å Microsoft Visual Basic-hjälpen på Hjälp-menyn, skriver buildcriteria-metoden i Office-assistenten eller Svarsguiden och klickar sedan på Sök för att visa avsnittet.