Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

docmd.OpenQuery con parametri

671 views
Skip to first unread message

pfm

unread,
Mar 16, 2017, 6:56:46 AM3/16/17
to
salve

utilizzo access 2003

come posso aprire una query parametrica da codice VBA?


definendo un recordset non ho problemi, ma una volta creato il recordset vorrei visualizzae

docmd.openquery



Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim qdf As DAO.QueryDef

Set db = CurrentDb
Set qdf = db.QueryDefs("Mia_Query_Parametrica")
qdf.Parameters!Anno = 2017
qdf.Parameters!Num = 1

Set rs = qdf.OpenRecordset(dbOpenDynaset)

' ho cosi' il recordset

MsgBox "num Record " & rs.RecordCount ' il numero di record



---> docmd.????? stile docmd.openquery


'alla fine azzeriamo gli oggetti e variabili:
qdf.Close: Set qdf = Nothing
rs.Close: Set rs = Nothing
Set db = Nothing

GRAZIE

Karl Donaubauer

unread,
Mar 16, 2017, 12:00:49 PM3/16/17
to
Salve,

pfm:
>
> come posso aprire una query parametrica da codice VBA?
>
> definendo un recordset non ho problemi, ma una volta creato il recordset vorrei visualizzae
>
> docmd.openquery
>...
Non puoi.
Diverso dall'oggetto di DAO l'oggetto di Access che vuoi aprire non ha
un insieme per parametri.

Un workaround sarebbe p.e. di salvare la query due volte: un modello e
una copia (ovvero dummy) per la quale con 2-3 righe di codice in più
prima di aprirla ogni volta cambia la proprietà SQL a secondo del
modello ed dei parametri.

--
Ciao
Karl
*********
http://www.AccessDevCon.com
Access FAQ: http://www.donkarl.com/it

Bruno Campanini

unread,
Mar 17, 2017, 7:01:28 AM3/17/17
to
pfm used his keyboard to write :
> salve
>
> utilizzo access 2003
>
> come posso aprire una query parametrica da codice VBA?
>
>
> definendo un recordset non ho problemi, ma una volta creato il recordset
> vorrei visualizzae
>
> docmd.openquery

Posto:
SQL = "SELECT t_Nomi.* FROM t_Nomi "
SQL = SQL & "WHERE (t_Nomi.Nome='Bruno');"

con:
CurrentDB.OpenRecordset(SQL, dbOpenDynaset)
crei il recordset

con:
SQL = "SELECT t_Nomi.* FROM t_Nomi "
SQL = SQL & "WHERE (t_Nomi.Nome=[Inserire il nome]);
Set qDef = CurrentDB.CreateQueryDef("q1", SQL)
crei la Select query parametrica

con:
DoCmd.OpenQuery "q1"
la apri da VBA

Comunque il luogo deputato per tali ed altre operazioni
è la scheda e non la query aperta con funamboliche istruzioni.

Bruno

pfm

unread,
Mar 17, 2017, 2:22:54 PM3/17/17
to
ringrazio entrambi

devo dire che utilizzo già la tecnica di creare da codice una query (eventualmente cancellando quella vecchia) ed eseguire docmd.openQuery speravo di utilizzare query parametriche

Grazie
0 new messages