Cómo hacer que una consulta de VBA en Access liste las tablas de una base de datos

Escrito por susan hare | Traducido por juliana star
  • Comparte
  • Twittea
  • Comparte
  • Pin
  • E-mail
Cómo hacer que una consulta de VBA en Access liste las tablas de una base de datos
Access almacena información acerca de la estructura de la base de datos en la tabla MSysObjects. (data storage image by Kir from Fotolia.com)

Microsoft Access es un sistema de administración de bases de datos para que las personas generen sus propias bases de datos, reportes y formularios de usuario. Access contiene todos los bloques de construcción para desarrollar pequeñas aplicaciones. Puedes crear tablas de datos, procedimientos almacenados, funciones definidas por el usuario y macros, además de reportes y formularios. Todos estos componentes tienen sus propios indicadores o definiciones de registros almacenadas en una tabla oculta del sistema. Access mantiene un registro de cada tabla, reporte, formulario, etc. que creas y almacena información como la fecha en la que dichos elementos fueron creados o actualizados, así como los indicadores del sistema.

Nivel de dificultad:
Moderadamente fácil

Otras personas están leyendo

Instrucciones

    Obtener una lista de tablas

  1. 1

    Crea una consulta para ejecutar el comando de SQL mostrado a continuación. Esta consulta obtiene una lista de todas las tablas de la base de datos actual de Access. La instrucción where usa el número 1 para indicar que solamente queremos que aparezcan las tablas.

    SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags FROM MSysObjects WHERE MSysObjects.Type = 1

  2. 2

    Obtén una lista que tenga solamente las tablas de la base de datos que no sean del sistema, con el ejemplo proporcionado a continuación:

    SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags FROM MSysObjects WHERE MSysObjects.Type = 1 AND MSysObjects.Name Not Like 'MSys'

  3. 3

    Obtén una lista que contenga únicamente las tablas no ocultas en la base de datos ejecutando la consulta siguiente:

    SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags FROM MSysObjects WHERE MSysObjects.Type = 1 AND MSysObjects.Flags <> 8

  4. 4

    Ordena la lista de las tablas no ocultas que no sean del sistema usando siguiente código SQL:

    SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags FROM MSysObjects WHERE MSysObjects.Type = 1 AND MSysObjects.Flags <> 8 AND MSysObjects.Name Not Like 'MSys*' ORDER BY MSysObjects.Name

    Usa la lista de tablas en VBA

  1. 1

    Carga tu lista de tablas en un objeto record set usando el código de VBA mostrado a continuación:

    Dim rsMisTablas As DAO.Recordset Set rsMisTablas = CurrentDb.OpenRecordset('MiConsulta')

  2. 2

    Desplázate mediante un ciclo a través de cada registro obtenido en la consulta.

    Dim rsMisTablas As DAO.Recordset Set rsMisTablas = CurrentDb.OpenRecordset('MiConsulta')

    Do While Not rsMisTablas.EOF 'Código para manipular información

    rsMisTablas.MoveNext Loop

  3. 3

    Agrega los nombres de cada tabla a una lista desplegable modificando tu ciclo while:

    Dim rsMisTablas As DAO.Recordset Set rsMisTablas = CurrentDb.OpenRecordset('MiConsulta') Me.cmbMiComboBox.Clear

    Do While Not rsMisTablas.EOF Me.cmbMiComboBox.AddItem rsMisTablas![Name]

    rsMisTablas.MoveNext Loop

  4. 4

    Cierra tu objeto record set para que libere la memoria que está usando:

    Dim rsMisTablas As DAO.Recordset Set rsMisTablas = CurrentDb.OpenRecordset('MiConsulta') Me.cmbMiComboBox.Clear

    Do While Not rsMisTablas.EOF Me.cmbMiComboBox.AddItem rsMisTablas![Name]

    rsMisTablas.MoveNext Loop

    rsMisTablas.Close Set rsMisTablas = Nothing

Consejos y advertencias

  • Las macros están escritas en Visual Basic para Aplicaciones (VBA), que es el lenguaje de programación estándar de Microsoft para Office.
  • Puedes listar cualquier objeto en Access cambiando el filtro 'MSysObject.Type'. Las opciones para este valor se encuentran a continuación:
  • Tabla= 1
  • Consulta= 5
  • Tabla vinculada= 4, 6, or 8
  • Formulario= -32768
  • Reporte= -32764
  • Módulo= -32761

No dejes de ver

Filtrar por:
  • Mostrar todos
  • Artículos
  • Galerías de fotos
  • Videos
Ordenar:
  • Más relevante
  • Más popular
  • Más reciente

No se encuentran artículos disponibles

No se encuentran slideshows disponibles

No se encuentran videos disponibles