Nwlapcug.com


Come creare un Pass parametro Query Access in VBA



Creazione di query con parametri con Microsoft Access VBA (Visual Basic for Applications) comporta l'uso di oggetti predefiniti di accesso, inclusi gli oggetti QueryDef e Database. La stringa di query utilizzata con questi oggetti è lo stesso utilizzato durante la creazione di query di Access senza VBA (ad es., "selezionare * from tabella WHERE myfield = [user_entered_parameter]").

Istruzioni

1

Aprire Access e creare una tabella di dati di esempio utilizzando le seguenti righe. Immettere il testo della prima riga come nomi di campo della tabella.

libro, DataVendita, netsale
promuovere words,12/1/2009,$5.03
promuovere words,12/3/2009,$4.97
der meisterstringer,12/5/2009,$1.97
der meisterstringer,12/6/2009,$0.97

2

Salvare la tabella come "libri", quindi inserire l'IDE (Integrated Development Environment) di Visual Basic premendo "Alt-F11."

3

Fare clic su "Inserisci", seguita da "Modulo" sulla barra degli strumenti dell'IDE, quindi incollare il codice seguente nella finestra del codice:

Public Sub param_q_select()
Dim db As DAO. Database
Dim qd As DAO. QueryDef
Dim sqry As String
Set db = CurrentDb
sqry = "Selezionare * FROM libri libro dove come [invio libro titolo]"
Impostare qd = db. CreateQueryDef ("qpSelect", sqry)
End Sub

4

Eseguire la macro posizionando il cursore in un punto qualsiasi all'interno di questa subroutine e premere "F5".

5

Torna ad Access e chiudere la finestra di navigazione a sinistra se è aperto. Aprire nuovamente la finestra e notare la nuova query memorizzate ("qpSelect"). Fare doppio clic su questa query per eseguirlo e digitare "pelliccia" al prompt. Si noti i risultati della query: vengono visualizzate solo le righe con "promuovere parole".

6

Tornare all'IDE premendo "Alt-F11" ed eseguire la macro utilizzando le istruzioni di passaggio 4. Notare l'errore che appare questa volta ("oggetto 'qpSelect' esiste già").

7

Rivedere il codice per evitare l'errore sostituendolo con questo codice:

Public Sub param_q_select()
Dim db As DAO. Database
Dim qd As DAO. QueryDef
Dim sqry As String
Set db = CurrentDb

On Error GoTo skip_delete

DB. QueryDefs.Delete "qpSelect"
skip_delete:
sqry = "Selezionare * FROM libri libro dove come [invio libro titolo]"
Impostare qd = db. CreateQueryDef ("qpSelect", sqry)
End Sub

8

Eseguire nuovamente il codice utilizzando le istruzioni di passaggio 4. Si noti che non c'è nessun errore questa volta.

9

Modificare la macro in modo che utente del programma può scegliere quale campo per creare un parametro di query da: copiare la subroutine completa param_q_select e incollarlo in un'area vuota della finestra del codice. Rinominare il duplicato come param_q_choose_field

10

Sostituire il codice esistente programma di param_q_choose_field, tra il "in caso di errore..." e "End Sub" istruzioni. Digitare o incollare questo codice invece:

Dim sf
SF = InputBox ("immettere il nome campo")
sqry = "Selezionare * FROM libri dove" & sf & "come [invio" & sf & "]"
On Error GoTo skip_delete
DB. QueryDefs.Delete "qpSelect"
skip_delete:
Impostare qd = db. CreateQueryDef ("qpSelect", sqry)
End Sub

11

Ri-eseguire la subroutine utilizzando istruzioni di passaggio 4 e digitare "netsale" quando viene visualizzato il prompt "Nome di campo di invio".

12

Eseguire la query creata dalla subroutine utilizzando istruzioni di Step 5. Tuttavia, inserire "0" quando viene richiesto per il parametro netsale. Premere "Enter" e notare che sono state restituite solo le righe cui campo "netsale" contiene un "0".