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
- Starta åtkomst.
- På hjälpmenyn pekar du på Exempeldatabaser och klickar sedan på Northwind Sample Database.
- Ö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"
- 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
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.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för