Cómo usar ADOX para crear una consulta de paso a través de SQL en Access

Moderado: requiere aptitudes básicas de macro, codificación e interoperabilidad.

Este artículo solo se refiere a una base de datos de Microsoft Access (.mdb o .accdb).

Resumen

En este artículo se muestra cómo crear una consulta de paso a través de SQL en Microsoft Visual Basic para Aplicaciones (VBA) con Microsoft ActiveX Data Objects (ADO).

Más información

Puede escribir una función en Visual Basic para aplicaciones que crean una consulta de paso a través de SQL. Una consulta de paso a través de SQL se compone de una instrucción SQL y una cadena de conexión. Al ejecutar la consulta, envía comandos directamente al servidor de base de datos para su procesamiento. Esto quita la sobrecarga del motor de base de datos de Microsoft Jet.

Con el modelo de objetos de acceso a datos (DAO), podría usar consultas de paso a través de SQL para mejorar el rendimiento al acceder a datos externos. Con ADO, puede usar el proveedor OLE DB de Microsoft para SQL Server para acceder directamente a un SQL Server sin la sobrecarga de Microsoft Jet u ODBC. También puede usar el proveedor OLE DB de Microsoft para ODBC para acceder a los datos de cualquier origen de datos ODBC.

Aunque ya no tiene que crear consultas de paso a través de SQL en la base de datos de Microsoft Jet para mejorar el rendimiento, todavía puede hacerlo mediante ADOX y el proveedor Jet. En el código siguiente se muestra cómo crear una consulta de paso a través de SQL.

NOTA: El código de ejemplo de este artículo usa extensiones de objetos de datos ADO y ActiveX para el lenguaje de definición de datos y la seguridad (ADOX). Para que este código se ejecute correctamente, debe hacer clic en Referencias en el menú Herramientas del Editor de Visual Basic y asegurarse de que están seleccionadas las dos referencias siguientes:

  • Biblioteca de Microsoft ActiveX Data Objects 2.1
  • Microsoft ADO Ext. 2.6 para DDL y seguridad

Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía, ya sea expresa o implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. Se considera que está familiarizado con el lenguaje de programación que se muestra y con las herramientas para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos adaptados a sus necesidades específicas. Para crear una consulta de paso a través de SQL en el código, siga estos pasos:

  1. Abra la base de datos northwind de ejemplo.
  2. Cree un nuevo módulo y escriba o pegue el código siguiente:
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. Para probar esta función, escriba la siguiente línea en la ventana Inmediato y presione ENTRAR:

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