Skapa parameterfrågor med Microsoft Access VBA ( Visual Basic for Applications ) innebär att man använder Access- fördefinierade objekt , inklusive QueryDef och databasobjekt . Frågesträngen används med dessa objekt är den samma som används när man skapar Access frågor utan VBA ( t.ex. " SELECT * från mytable WHERE myField = [ user_entered_parameter ] " ) . Saker du behöver
Microsoft Access
Visa fler instruktioner
1
Open Access och skapa en tabell med exempeldata med följande rader . Ange den första raden text som tabellens fältnamn .
Bok , datesold , netsalefurthering ord , 12/1/2009 , $ 5.03furthering ord , 12/3/2009 , $ 4.97der meisterstringer , 2009/12/05 , $ 1.97der meisterstringer , 12/6/2009 , $ 0,97
2
Spara tabellen som " böcker ", ange sedan Visual Basic IDE ( Integrated Development Environment ) genom att trycka " Alt - F11 . " Addera 3
Klicka på" Infoga ", följt av " modul " på IDE : s verktygsfält , sedan klistra in följande kod i fönstret :
Public sub param_q_select ( ) Dim db Som DAO.DatabaseDim qd Som DAO.QueryDefDim sqry Som StringSet db = CurrentDbsqry = " SELECT * FROM böcker WHERE bok som [ Enter boktitel ] " Set qd = db.CreateQueryDef ( " qpSelect " , sqry ) End Sub
4
Kör makrot genom att placera markören någonstans inuti denna subrutin och trycka " F5 ".
5
Återgå till Access och stänga navigering fönstret till vänster om det är öppet . Åter öppna fönstret och märka den nya , lagrad fråga ( " qpSelect " ) . Dubbelklicka på den här frågan för att köra den , och typ " * päls * " vid prompten . Lägg märke till de frågeresultat : endast de rader som " främjar ord " visas
6
tillbaka till IDE genom att trycka " Alt - F11 , " och kör makrot med Steg 4 : s instruktioner . . Lägg märke till det fel som visas denna gång ( " Objekt " qpSelect 'finns redan " )
7
Revidera koden för att förhindra felet genom att ersätta den med denna kod : .
Public sub param_q_select ( ) Dim db Som DAO.DatabaseDim qd Som DAO.QueryDefDim sqry Som StringSet db = CurrentDbOn Error GoTo skip_deletedb.QueryDefs.Delete " qpSelect " skip_delete : sqry = " SELECT * FROM böcker WHERE bok som [ Enter boktitel ] " Ställ qd = db.CreateQueryDef ( " qpSelect " , sqry ) End Sub
8
Re - kör kod med Steg 4 : s instruktioner . Observera att det inte finns något fel den här gången
9
Revidera makrot så att ditt program har användaren kan välja vilka fält för att skapa en parameterfråga från : . Kopiera hela param_q_select subrutinen och klistra in den i ett tomt område av koden fönstret . Byt namn på kopian som param_q_choose_field
10
Ersätt den befintliga programkoden för param_q_choose_field , mellan den " på fel ... " och " End Sub " uttalanden . Skriv eller klistra in denna kod istället :
Dim sfsf = InputBox ( " Ange fältnamn " ) sqry = " SELECT * FROM böcker där" & sf & " gillar [ Enter" & sf & " ] " On Error GoTo skip_deletedb.QueryDefs.Delete " qpSelect " skip_delete : Set qd = db.CreateQueryDef ( " qpSelect " , sqry ) End Sub
11
Re - kör subrutinen med Steg 4 : s anvisningar , och typ " Netsale " när " Enter fältnamnet " prompten visas .
12
kör frågan skapas av subrutinen med Steg 5 : s instruktioner . Men , skriv " * 0 * " när du ombeds för Netsale parametern . Tryck " Enter " och märker att bara rader som " Netsale " fältet innehåller ett " 0 " returnerades .