March 5
La 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 utilizzato con questi oggetti è lo stesso utilizzato per la creazione di query di Access senza VBA (ad esempio, "SELECT * from Tabella WHERE myfield = [user_entered_parameter]").
1 Open Access e creare una tabella di dati di esempio utilizzando le seguenti righe. Inserire il testo prima della riga come nomi di campo della tabella.
libro, datesold, netsale
parole che favoriscano, 12/1/2009, $ 5.03
parole che favoriscano, 12/3/2009, $ 4.97
der meisterstringer, il 12/5/2009 $ 1,97
der meisterstringer, il 12/6/2009 $ 0,97
2 Salvare la tabella come "libri", quindi immettere l'IDE di Visual Basic (Integrated Development Environment) premendo il tasto "Alt-F11".
3 Fai clic su "Inserisci", seguito da "modulo" a barra degli strumenti del IDE, quindi incollare il seguente codice nella finestra del codice:
Public Sub param_q_select ()
db fioco come DAO.Database
qd fioco come DAO.QueryDef
Dim sqry As String
Set db = CurrentDb
sqry = "SELECT * FROM libri WHERE libro come [Invio 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 Ritorno a Access e chiudere la finestra di navigazione a sinistra se è aperto. Ri-aprire la finestra e notare la nuova, conservati query ( "qpSelect"). Fare doppio clic su questa query per eseguirlo, e digitare
"pelliccia" al prompt. Si noti i risultati della query: solo le righe con "promuovere le parole" sono mostrati.
6 Ritorna alla IDE premendo il tasto "Alt-F11", ed eseguire la macro utilizzando Fase 4 di istruzioni. Si noti l'errore che compare questa volta ( "Oggetto 'qpSelect' esiste già").
7 Modificare il codice per impedire l'errore sostituendolo con questo codice:
Public Sub param_q_select ()
db fioco come DAO.Database
qd fioco come DAO.QueryDef
Dim sqry As String
Set db = CurrentDb
On Error GoTo skip_delete
db.QueryDefs.Delete "qpSelect"
skip_delete:
sqry = "SELECT * FROM libri WHERE libro come [Invio titolo del libro]"
Set qd = DB.CreateQueryDef ( "qpSelect", sqry)
End Sub
8 Rieseguire il codice utilizzando Fase 4 di istruzioni. 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 da: copiare la subroutine piena param_q_select e incollarlo in una zona vuota della finestra del codice. Rinomina questo duplicato come param_q_choose_field
10 Sostituire il codice di programma esistente di param_q_choose_field, tra le affermazioni "On Error ..." e "End Sub". Digitare o incollare questo codice invece:
Dim sf
SF = InputBox ( "Inserire il nome di campo")
sqry = "SELECT * FROM libri WHERE" & SF & "come [Enter" & SF e "]"
On Error GoTo skip_delete
db.QueryDefs.Delete "qpSelect"
skip_delete:
Set qd = DB.CreateQueryDef ( "qpSelect", sqry)
End Sub
11 Rieseguire il subroutine utilizzando Fase 4 di istruzioni, e digitare "netsale" quando il "Inserisci il nome campo" appare il prompt.
12 Eseguire la query creata dalla subroutine utilizzando le istruzioni passo 5 di. Tuttavia, immettere "0" quando richiesto per il parametro netsale. Premere il tasto "Enter" e notare che solo le righe il cui campo "netsale" contiene uno "0" sono stati restituiti.