Come usare ADOX per creare una query pass-through SQL in Access

Moderato: richiede competenze di base di macro, codifica e interoperabilità.

Questo articolo si applica solo a un database di Microsoft Access (con estensioni .accdb e .mdb).

Riepilogo

Questo articolo illustra come creare una query pass-through SQL in Microsoft Visual Basic, Applications Edition (VBA) con Microsoft ActiveX Data Objects (ADO).

Ulteriori informazioni

È possibile scrivere una funzione in Visual Basic, per le applicazioni che crea una query pass-through SQL. Una query pass-through SQL è costituita da un'istruzione SQL e da un stringa di connessione. Quando si esegue la query, invia i comandi direttamente al server di database per l'elaborazione. In questo modo viene rimosso il sovraccarico del motore di database Microsoft Jet.

Con il modello DAO (Data Access Object), è possibile usare query pass-through SQL per migliorare le prestazioni quando si accede a dati esterni. Con ADO è possibile usare il provider Microsoft OLE DB per SQL Server per accedere direttamente a un SQL Server senza il sovraccarico di Microsoft Jet o ODBC. È anche possibile usare il provider Microsoft OLE DB per ODBC per accedere ai dati in qualsiasi origine dati ODBC.

Anche se non è più necessario creare query pass-through SQL nel database Microsoft Jet per migliorare le prestazioni, è comunque possibile usare ADOX e il provider Jet. Il codice seguente illustra come creare una query pass-through SQL.

NOTA: il codice di esempio in questo articolo usa le estensioni ADO e ActiveX Data Objects per ADOX (Data Definition Language and Security). Affinché il codice venga eseguito correttamente, è necessario fare clic su Riferimenti nel menu Strumenti del Editor visual basic e assicurarsi che siano selezionati i due riferimenti seguenti:

  • Libreria Microsoft ActiveX Data Objects 2.1
  • Microsoft ADO Ext. 2.6 for DDL and Security

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. Gli esperti Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare routine, ma in nessun caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare routine atte a soddisfare specifiche esigenze. Per creare una query pass-through SQL nel codice, seguire questa procedura:

  1. Aprire il database Northwind di esempio.
  2. Creare un nuovo modulo e quindi digitare o incollare il codice seguente:
Function CreateSPT(SPTQueryName As String, strSQL As String)

Dim cat As ADOX.Catalog
  Dim cmd As ADODB.Command

Set cat = New ADOX.Catalog
  Set cmd = New ADODB.Command

cat.ActiveConnection = CurrentProject.Connection

Set cmd.ActiveConnection = cat.ActiveConnection

cmd.CommandText = strSQL
  cmd.Properties("Jet OLEDB:ODBC Pass-Through Statement") = True

'Modify the following connection string to reference an existing DSN for 
 'the sample SQL Server PUBS database.

cmd.Properties _
     ("Jet OLEDB:Pass Through Query Connect String") = _
       "ODBC;DSN=myDSN;database=pubs;UID=sa;PWD=;"
  cat.Procedures.Append SPTQueryName, cmd

Set cat = Nothing
  Set cmd = Nothing

End Function

  1. Per testare questa funzione, digitare la riga seguente nella finestra Immediata e quindi premere INVIO:

    ? CreateSPT("MySptQuery", "Select * from Authors")