Hvordan lage en Pass parameterspørring tilgang i VBA

Hvordan lage en Pass parameterspørring tilgang i VBA


Opprette parameterspørringer med Microsoft Access VBA (Visual Basic for Applications) innebærer å bruke tilgangsforhåndsdefinerte objekter, inkludert QueryDef og databaseobjekter. Søkestrengen brukes med disse objektene er den samme som brukes når du oppretter Access-spørringer uten VBA (for eksempel "SELECT * fra MyTable WHERE myfield = [user_entered_parameter]").

Bruksanvisning

1 Open Access og lage en tabell med eksempeldata ved hjelp av følgende rader. Skriv inn den første raden tekst som tabellens feltnavn.

bok, datesold, netsale
som fremmer ord, 12/1 / 2009, $ 5.03
som fremmer ord, 12/3 / 2009, $ 4,97
der meisterstringer 12/5/2009, $ 1,97
der meisterstringer 12/6/2009, $ 0,97

2 Lagre tabellen som "bøker" og deretter gå inn i Visual Basic IDE (Integrated Development Environment) ved å trykke på "Alt-F11."

3 Klikk "Sett inn" og deretter "Module" på IDE-verktøylinjen, og deretter lime inn følgende kode inn koden vinduet:

Public Sub param_q_select ()
Dim db As DAO.Database
Dim qd Som DAO.QueryDef
Dim sqry As String
Sett db = CurrentDb
sqry = "SELECT * FROM bøker HVOR bok som [Enter boktittel]"
Set qd = db.CreateQueryDef ( "qpSelect", sqry)
End Sub

4 Kjør makroen ved å plassere markøren hvor som helst i denne subrutine og trykke "F5".

5 Gå tilbake til Access og lukke navigasjonsvinduet til venstre hvis det er åpent. Re-åpne vinduet og legge merke til den nye, lagret spørring ( "qpSelect"). Dobbeltklikk på dette søket for å kjøre den, og skriv

"pels" ved ledeteksten. Legg merke til spørringsresultatene: bare rader med "fremme ordene" vises.

6 Gå tilbake til IDE ved å trykke på "Alt-F11," og kjøre makroen med Trinn 4 instruksjoner. Legg merke til den feilen som vises denne gangen ( "Object" qpSelect finnes allerede ").

7 Revidere kode for å hindre feil ved å erstatte den med denne koden:

Public Sub param_q_select ()
Dim db As DAO.Database
Dim qd Som DAO.QueryDef
Dim sqry As String
Sett db = CurrentDb

On Error GoTo skip_delete

db.QueryDefs.Delete "qpSelect"
skip_delete:
sqry = "SELECT * FROM bøker HVOR bok som [Enter boktittel]"
Set qd = db.CreateQueryDef ( "qpSelect", sqry)
End Sub

8 Re-kjøre koden ved hjelp Trinn 4 instruksjoner. Legg merke til at det ikke er noen feil av denne tiden.

9 Revidere makroen slik at programmet kan brukeren velge hvilket felt for å lage en parameterspørring fra: kopiere hele param_q_select subrutine og lime den inn i et tomt område av koden vinduet. Gi denne duplikat som param_q_choose_field

10 Erstatte den eksisterende programkode fra param_q_choose_field, mellom "på feil ..." og "End Sub" uttalelser. Skriv eller lim inn denne koden i stedet:

Dim sf
sf = InputBox ( "Skriv feltnavn")
sqry = "select * FROM bøker HVOR" & sf & "som [Enter" og sf & "]"
På Error GoTo skip_delete
db.QueryDefs.Delete "qpSelect"
skip_delete:
Set qd = db.CreateQueryDef ( "qpSelect", sqry)
End Sub

11 Re drevne subrutinen hjelp Trinn 4 instruksjoner, og skriv "netsale" når "Enter feltnavn» vises.

12 Kjør spørringen skapt av subrutinen hjelp Trinn 5 instruksjoner. Men skriv "0" når du blir bedt for netsale parameter. Trykk "Enter" og merker at bare rader som "netsale" -feltet inneholder en "0" ble returnert.