Cómo utilizar el método OpenSchema de ADO en Visual Basic

Seleccione idioma Seleccione idioma
Id. de artículo: 186246 - Ver los productos a los que se aplica este artículo
Para obtener una versión de Microsoft Visual Basic .NET de este artículo, consulte 309488.
Expandir todo | Contraer todo

Resumen

En este artículo se describe cómo utilizar el método OpenSchema del objeto Connection de ActiveX Data Objects (ADO) para obtener más información acerca de la base de datos o tabla.

La sintaxis de OpenSchema es la siguiente:
Establecer el conjunto de registros = connection.OpenSchema (QueryType, criterios, SchemaID debe)

Más información

Aquí son los tres parámetros del método OpenSchema:
  • Un valor enumerado que especifica el tipo del esquema necesario. Algunos ejemplos son adSchemaTables, adSchemaColumns y adSchemaPrimaryKeys.
  • Una matriz variant. El número de elementos y el contenido de esta matriz depende del tipo de consulta de esquema para ejecutar. Puede utilizar este parámetro para restringir el número de filas que devolver el conjunto de resultados. Sin embargo, no se puede limitar el número de columnas que devuelve utilizando OpenSchema. El miembro de matriz de criterios indica los valores de cadena para restringir los resultados de consulta. El número de los miembros de la matriz varía según el querytype.
  • El tercer parámetro varía en función del proveedor que utilice. Es necesario sólo si se establece el primer parámetro en adSchemaProviderSpecific; en caso contrario, no se utiliza.
A continuación son los parámetros de ejemplo para OpenSchema. Observe que los criterios se cambia con el querytype. Lo más importante que recordar es que el orden de proporcionar los valores tiene que ser el mismo. Una lista de criterios correspondientes para otros querytypes está en la documentación en pantalla ubicada en la siguiente dirección URL:
http://msdn2.microsoft.com/en-us/library/ms805098.aspx
   QueryType        Criteria
   =============================

   adSchemaTables   TABLE_CATALOG
                    TABLE_SCHEMA
                    TABLE_NAME
                    TABLE_TYPE
				
Utilice adSchemaTables para enumerar las tablas de una base de datos.

Microsoft Access 97 y Access 2000

Para mostrar todas las tablas y consultas de la base de datos Microsoft Access NWind, simplemente utilice el siguiente código:
Set rs = cn.OpenSchema(adSchemaTables)
   While Not rs.EOF
      Debug.Print rs!TABLE_NAME
      rs.MoveNext
   Wend
				
para mostrar sólo las tablas de la base de datos Access Nwind, utilice:
Set rs = cn.OpenSchema(adSchemaTables, _
         Array(Empty, Empty, Empty, "Table")
				
utilizar la misma sintaxis, utilizando el proveedor OLE DB para ODBC con el controlador ODBC de Jet y con los proveedores OLE DB de Jet.

Microsoft SQL Server 6.5 y 7.0

Para mostrar todas las tablas y vistas en la base de datos de Pubs de Microsoft SQL Server, utilice:
Set rs = cn.OpenSchema(adSchemaTables)
				
para mostrar sólo las tablas de la base de datos Server Pubs de SQL, utilice:
Set rs = cn.OpenSchema(adSchemaTables, _
         Array("Pubs", Empty, Empty, "Table")
				
utilizar la misma sintaxis que utiliza el proveedor OLE DB para ODBC con el controlador ODBC de SQL Server y utiliza el proveedor OLE DB para SQL Server.
   QueryType         Criteria
   ===============================

   adSchemaColumns   TABLE_CATALOG
                     TABLE_SCHEMA
                     TABLE_NAME
                     COLUMN_NAME
				
utilice adSchemaColumns para enumerar los campos de una tabla.

Microsoft Access 97 y Access 2000

A la lista base de datos con adSchemaColumns, uso simplemente los campos de la tabla empleados en el acceso Nwind:
Set rs = cn.OpenSchema(adSchemaColumns,Array(Empty, Empty, "Employees")

While Not rs.EOF
   Debug.Print rs!COLUMN_NAME
   rs.MoveNext
Wend
				
esto funciona utilizando el proveedor OLE DB para ODBC con el controlador ODBC de Jet y con los proveedores OLE DB de Jet.

Microsoft SQL Server 6.5 y 7.0

A la lista base de datos con adSchemaColumns, uso simplemente los campos de la tabla authors en Pubs de SQL Server:
Set rs = cn.OpenSchema(adSchemaColumns, Array("pubs", "dbo", "Authors")
				
nota que TABLE_CATALOG es la base de datos y TABLE_SCHEMA es propietario de la tabla. Esto funciona mediante el proveedor OLE DB para ODBC con ODBC de SQL Server controlador y mediante el proveedor OLE DB para SQL Server.
   QueryType          Criteria
   ================================

   adSchemaIndexes    TABLE_CATALOG
                      TABLE_SCHEMA
                      INDEX_NAME
                      TYPE
                      TABLE_NAME
				
debe proporcionar el nombre de índice en caso de querytype adSchemaIndexes.

Microsoft Access 97 y Access 2000

A lista de los índices de la tabla empleados en la Nwind acceso base de datos con adSchemaIndexes, uso simplemente:
Set rs = cn.OpenSchema(adSchemaIndexes, _
         Array(Empty, Empty, Empty, Empty, "Employees")

While Not rs.EOF
   Debug.Print rs!INDEX_NAME
   rs.MoveNext
Wend
				
esto funciona utilizando el proveedor OLE DB para ODBC con el controlador ODBC de Jet y con los proveedores OLE DB de Jet.

Microsoft SQL Server 6.5 y 7.0

A la lista base de datos con adSchemaIndexes, uso simplemente los índices en la tabla authors en Pubs de SQL Server:
Set rs = cn.OpenSchema(adSchemaIndexes, _
         Array("Pubs", "dbo", Empty, Empty, "Authors")
				
esto funciona mediante el proveedor OLE DB para ODBC con ODBC de SQL Server controlador y mediante el proveedor OLE DB para SQL Server. Los pasos siguientes muestran el método OpenSchema.

Ejemplo del método OpenSchema

En Visual Basic (VB), seleccione un proyecto EXE estándar. Agregue tres botones de comando al proyecto EXE. En el menú proyecto , elija referencias . En el cuadro de diálogo referencias, seleccione Biblioteca de objetos de Microsoft ActiveX . Este ejemplo utiliza la base de datos pubs se suministra con SQL Server. Tiene que cambiar el nombre del origen de datos (DSN) a un DSN en el equipo. Pegue el código siguiente en la sección Declaraciones generales del proyecto:

Nota Tendrá que cambiar el UID = <username> y PWD = < contraseña > a los valores correctos antes de ejecutar este código. Asegúrese de que UID tiene los permisos adecuados realizar esta operación en la base de datos.
   'Open the proper connection.
   Dim cn As New ADODB.Connection
   Dim rs As New ADODB.Recordset

   Private Sub Command1_Click()
   'Getting the information about the columns in a particular table.
      Set rs = cn.OpenSchema(adSchemaColumns, Array("pubs", "dbo", _
             "authors"))
      While Not rs.EOF
          Debug.Print rs!COLUMN_NAME
          rs.MoveNext
      Wend

   End Sub

   Private Sub Command2_Click()
   'Getting the information about the primary key for a table.
      Set rs = cn.OpenSchema(adSchemaPrimaryKeys, Array("pubs", "dbo", _
             "authors"))
      MsgBox rs!COLUMN_NAME
   End Sub

   Private Sub Command3_Click()
   'Getting the information about all the tables.
      Dim criteria(3) As Variant
      criteria(0) = "pubs"
      criteria(1) = Empty
      criteria(2) = Empty
      criteria(3) = "table"
      Set rs = cn.OpenSchema(adSchemaTables, criteria)
      While Not rs.EOF
         Debug.Print rs!TABLE_NAME

         rs.MoveNext
      Wend

   End Sub

   Private Sub Form_Load()
      cn.Open "dsn=pubs;uid=<username>;pwd=<strong password>;"
      'To test with the Native Provider for SQL Server, comment the
      ' line above then uncomment the following line. Modify to use
      ' your server.
      'cn.Open "Provider=SQLOLEDB;Data Source=<servername>;" & _
      '        "User ID=sa;password=;"

   End Sub
				
Run. Haga clic en cada botón de comando para probar. End.Modify el procedimiento de evento Form Load para utilizar el proveedor nativo para SQL Server. Vuelva a probar. Obtener más información sobre querytype y criterios está disponible en la documentación de ADO. La información de esquema especificada en OLE DB se basa en el supuesto de que el proveedor admite el concepto de un catálogo y el esquema.

Referencias

Para obtener más información en OpenSchema, vea los artículos siguientes en Microsoft Knowledge Base:
182831Cómo para utilizar el método de OpenSchema de ADO de Visual C++
185979Cómo utilizar ADO para recuperar información de índice de tabla

Propiedades

Id. de artículo: 186246 - Última revisión: martes, 4 de diciembre de 2007 - Versión: 5.6
La información de este artículo se refiere a:
  • Microsoft ActiveX Data Objects 1.5
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1 Service Pack 2
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Palabras clave: 
kbmt kbdatabase kbhowto kbjet kbprovider KB186246 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 186246

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com