Opprette parameterspørringer med Microsoft Access VBA ( Visual Basic for Applications ) innebærer å bruke Tilgang forhåndsdefinerte objekter, inkludert QueryDef og Database stedene. Søkestrengen brukes med disse objektene er den samme som brukes når du oppretter Access spørsmål uten VBA (for eksempel " SELECT * fra MyTable WHERE myfield = [ user_entered_parameter ] ") . Du trenger:
Microsoft Access
Vis flere instruksjoner
en
Open Access og lage en tabell av prøven data ved hjelp av følgende rader. Tast inn den første raden tekst som tabellens feltnavn.
Bok, datesold , netsalefurthering ord , 12/1/2009 , $ 5.03furthering ord , 12/3/2009 , $ 4.97der meisterstringer , 12/5/2009 , $ 1.97der 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 "Alt- F11 . "
3
Klikk " Sett inn ", etterfulgt av " Module " på IDE- verktøylinjen , deretter lim inn følgende kode inn i koden vinduet:
Public sub param_q_select ( ) Dim db As DAO.DatabaseDim qd Som DAO.QueryDefDim sqry Som StringSet db = CurrentDbsqry = "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
Tilbake til Access og lukke navigasjon vinduet 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 " * fur *" ved ledeteksten. Legg merke til søkeresultatene : bare radene med " furthering ordene" vises
6
Tilbake til IDE ved å trykke "Alt- F11 , " og kjøre makroen bruker Trinn 4 instruksjoner. . Legg merke til feilen som vises denne gangen ( " Object ' qpSelect ' finnes allerede ")
7
Revidere kode slik at feilen ved å erstatte den med denne koden : .
Public sub param_q_select ( ) Dim db As DAO.DatabaseDim qd Som DAO.QueryDefDim sqry Som StringSet db = CurrentDbOn Feil GoTo skip_deletedb.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 kode med Trinn 4 instruksjoner. Legg merke til at det ikke er noen feil denne gangen
9
Revidere makroen slik at programmet kan brukeren velge hvilket felt for å skape en parameter spø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
Erstatt den eksisterende programkode av param_q_choose_field , mellom "på feil ..." og " End Sub " uttalelser . Skriv eller lim inn denne koden i stedet : en
Dim sfsf = InputBox ("Skriv inn feltnavnet ") sqry = "select * FROM bøker HVOR " & sf & " liker [Enter " & sf & " ] " On Error GoTo skip_deletedb.QueryDefs.Delete " qpSelect " skip_delete : Set qd = db.CreateQueryDef ( " qpSelect " , sqry ) End Sub
11
Re- kjør subrutine hjelp Step fire instruksjoner , og type " netsale " når "Enter feltnavnet "-ledeteksten vises.
12
Kjør spørringen opprettet av subrutinen hjelp Trinn 5 anvisninger. Men skriv " * 0 * " når du blir bedt om netsale parameter. Trykk på " Enter" og legge merke til at bare rader som " netsale "-feltet inneholder en " 0" ble returnert .