06/08/2005
Aprire una query parametrica utilizzando ADO.
Versione ADO utilizzata: 2.8

Nell'esempio viene sfruttata la possibilità di vedere il nome della query come metodo dell'oggetto Connection.
Aprite il database di esempio NorthWind, create un nuovo modulo Bas, incollate il codice qui sotto ed eseguitelo.
Dato che il mome della query da richiamare contiene degli spazi, è necessario racchiuderla tra due coppie di parentesi quadre, la più esterna serve a VBA, la più interna serve a Jet.
----------------------------
Sub TestQueryParametrica()

   Dim Rs As New ADODB.Recordset
   Dim Cn As ADODB.Connection
   Dim DaData As Date
   Dim AData As Date

   Set Cn = CurrentProject.Connection

   'Imposto l'intervallo delle date
   DaData = "22/07/1996"
   AData = "23/07/1996"

   'Apro il recordset
   Cn.[[Vendite impiegato per paese]] DaData, AData, Rs

   'Stampo alcuni campi nella finestra immediata
   Do Until Rs.EOF
      Debug.Print Rs!IDOrdine, Rs!DataSpedizione
      Rs.MoveNext
   Loop

   'Chiudo il recordset
   Rs.Close
   Set Rs = Nothing
   Set Cn = Nothing

End Sub
----------------------------


Ovviamente trattandosi di una caratteristica dell'oggetto ADO possiamo applicare lo stesso codice ad un progetto ADP collegato ad un database di Sql Server.
Aprite un progetto ADP, collegatelo al database di esempio NorthWind, create un nuovo modulo Bas, incollate il codice qui sotto ed eseguitelo.
----------------------------
Sub TestStoredParametrica()

   Dim Rs As New ADODB.Recordset
   Dim Cn As ADODB.Connection
   Dim DaData As Date
   Dim AData As Date

   Set Cn = CurrentProject.Connection

   'Imposto l'intervallo delle date
   DaData = "22/07/1996"
   AData = "23/07/1996"

   'Apro il recordset
   Cn.["Employee Sales by Country"] DaData, AData, Rs

   'Stampo alcuni campi nella finestra immediata
   Do Until Rs.EOF
      Debug.Print Rs!OrderID, Rs!ShippedDate
      Rs.MoveNext
   Loop

   'Chiudo il recordset
   Rs.Close
   Set Rs = Nothing
   Set Cn = Nothing

End Sub
----------------------------

Sql Server permette di delimitare i nomi degli oggetti tra doppi apici, quindi possiamo utilizzare questo tipo di delimitatore al posto delle parentesi quadre.

Giorgio Rancati

Torna all'indice