Come creare un accesso Passo query di parametri in VBA

March 5

Come creare un accesso Passo query di parametri in VBA


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]").

istruzione

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.