Sandro Bizioli


Chi sogna di giorno conosce molte cose che sfuggono a chi sogna soltanto di notte. (E.A.Poe)
Mappa

Query parametriche con DAO

Pur essendo assai datato esistono ancora molti applicativi scritti in VB6, ad esempio, che si interfacciano con database Access attraverso DAO (Data Access Object).
Ad esempio, se volessimo estrarre tutti i clienti dal classico database Northwind.mdb scriveremmo qualcosa del genere:

Private Sub myTest
   Dim MyDB As DAO.Database
   Dim MySet As DAO.Recordset
   Set MyDB = CurrentDB()
   Set MySet = MyDB.OpenRecordset("Select * from Employees", dbOpenDynaset)
End Sub

Identica sintassi se dovessimo richiamare una query.

Private Sub myTest
   Dim MyDB As DAO.Database
   Dim MySet As DAO.Recordset
   Set MyDB = CurrentDB()
   Set MySet = MyDB.OpenRecordset("Query1", dbOpenDynaset)
End Sub

Qualche propblemino in più se la nostra query fosse una query parametrica.
Infatti sarebbe necessario dichiarare i vari parametri ed impostarne i rispettivi valori prima di eseguirla, pena la restituzione di un messaggio d'errore "Troppo pochi parametri. Previsto x"

Quando si fa riferimento, in DAO, ad una query con parametri, la sintassi appropriata è la seguente:

Private Sub mySub()
   Dim MyDB As DAO.Database
   Dim MyDef As DAO.QueryDef
   Dim MySet As DAO.Recordset
   Set MyDB = CurrentDB()
   Set MyDef = MyDB.QueryDefs("Query1")
   MyDef.Parameters("@PrimoParametro").Value = PrimoValore
   MyDef.Parameters("@SecondoParametro").Value = SecondoValore
   MyDef.Parameters("@TerzoParametro").Value = TerzoValore
  
   Set MySet = MyDef.OpenRecordset(dbOpenDynset) 
   MySet.Close
   MyDef.Close
End Sub

Ricordiamo che l'ordine dei parametri non è necessario ed è possibile referenziarli anche tramite il loro indice (es. MyDef.Parameters(0).Value = PrimoValore)

Categoria: VB6
venerdì, 29 mag 2009 Ore. 16.55
Statistiche
  • Views Home Page: 105.750
  • Views Posts: 530.729
  • Views Gallerie: 88.833
  • n° Posts: 227
  • n° Commenti: 222
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003