Creazione di query con parametri con Microsoft Access VBA ( Visual Basic for Applications ) comporta l'uso di oggetti predefiniti di accesso, compresa la QueryDef e oggetti di database . La stringa di query utilizzata con questi oggetti è lo stesso utilizzato per la creazione query di Access senza VBA (ad esempio , "SELECT * FROM tabella WHERE Campo = [ user_entered_parameter ] " ) . Cose che ti serviranno
Microsoft Access
Mostra più istruzioni
1
Open Access e creare una tabella di dati di esempio utilizzando le seguenti righe. Inserisci il testo della prima riga come nomi dei campi della tabella.
Libro, datesold , parole netsalefurthering , 12/1/2009 , $ parole 5.03furthering , 12/3/2009 , $ 4.97der meisterstringer , 12/5/2009 , $ 1.97der meisterstringer , 12/6/2009 , 0,97 dollari
2
salvare la tabella come " libri", quindi inserire il Visual Basic (Integrated Development Environment ), premendo il tasto " Alt- F11 . "
3
Fare clic su" Inserisci ", seguito da " Modulo " sulla barra degli strumenti del IDE , quindi incollare il codice riportato di seguito nella finestra del codice :
pubblico sub param_q_select ( ) Dim db As DAO.DatabaseDim qd Come DAO.QueryDefDim sqry Come StringSet db = CurrentDbsqry = " SELECT * FROM libri WHERE libro come [ Inserire titolo del libro ] " Set qd = db.CreateQueryDef ( " qpSelect " , sqry ) End Sub
4
Eseguire la macro posizionando il cursore in qualsiasi punto all'interno di questa subroutine e premendo il tasto " F5 ".
5
tornare ad Access e chiudere la navigazione finestra a sinistra se è aperto . Riaprire la finestra e notare la nuova query memorizzata ( " qpSelect " ) . Fare doppio clic su questa query per eseguirlo , e digitare " * pelliccia * " al prompt . Si noti i risultati della query : solo le righe con "un'ulteriore parole " sono riportati
6
tornare all'IDE premendo il tasto " Alt- F11 " ed eseguire la macro utilizzando le istruzioni passo di 4 . . Si noti l' errore visualizzato questo momento ( "Object ' qpSelect ' esiste già " ) economici 7
rivedere il codice per evitare l'errore sostituendolo con questo codice: .
Pubblica sub param_q_select ( ) Dim db As DAO.DatabaseDim qd Come DAO.QueryDefDim sqry Come StringSet db = CurrentDbOn Error GoTo skip_deletedb.QueryDefs.Delete " qpSelect " skip_delete : sqry = " SELECT * FROM libri WHERE libro come [ Inserire titolo del libro ] " Set qd = db.CreateQueryDef ( " qpSelect " , sqry ) End Sub
8
rieseguire il codice utilizzando le istruzioni passo di 4 . Si noti che non vi è alcun errore questa volta
9
rivedere la macro in modo che l'utente del programma può scegliere quale campo per creare una query con parametri di : . Copiare la subroutine param_q_select piena e incollarlo in una zona vuota della finestra del codice . Rinominare il duplicato come param_q_choose_field
10
Sostituire il codice del programma esistente di param_q_choose_field , tra " in caso di errore ... " e le dichiarazioni "End Sub " . Digitare o incollare il codice invece :
Dim sfsf = InputBox ( " Inserisci il nome del campo " ) sqry = " SELECT * FROM libri WHERE" & sf & " come [ ENTER" & sf & " ] " On Error GoTo skip_deletedb.QueryDefs.Delete " qpSelect " skip_delete : Set qd = db.CreateQueryDef ( " qpSelect " , sqry ) End Sub
11
Re - eseguire la subroutine utilizzando le istruzioni passo di 4 e di tipo " netsale " quando il " campo Immettere il nome " appare pronta .
12
eseguire la query creata dalla subroutine utilizzando le istruzioni passo 5 di . Tuttavia, immettere " * 0 * " quando richiesto per il parametro netsale . Premere "ENTER" e notare che solo le righe il cui campo " netsale " contiene uno "0" sono stati restituiti .