Como fazer uma consulta VBA no Access, lista as tabelas em um banco de dados

O Microsoft Access é um sistema de gerenciamento de banco de dados para as pessoas gerarem seus próprios bancos de dados, relatórios e formulários de usuário. O Access contém todos os elementos básicos para desenvolver pequenos aplicativos. Você pode criar tabelas de dados, procedimentos armazenados, funções e macros definidas pelo usuário, além de relatórios e formulários. Todos esses componentes têm seus próprios indicadores ou definições de registros armazenados em uma tabela do sistema oculta. O Access mantém um registro de cada tabela, relatório, formulário etc. que você crie e armazene informações como a data em que esses elementos foram criados ou atualizados, bem como os indicadores do sistema.

Obter uma lista de tabelas

Passo 1

Crie uma consulta para executar o comando SQL mostrado abaixo. Esta consulta obtém uma lista de todas as tabelas no banco de dados atual do Access. A instrução where usa o número 1 para indicar que queremos apenas que as tabelas apareçam.

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

Etapa 2

Obtenha uma lista que possui apenas tabelas de banco de dados que não são do sistema, com o exemplo fornecido abaixo:

SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags FROM MSysObjects WHERE MSysObjects.Type = 1 AND MSysObjects.Name Não é como ‘MSys’

Etapa 3

Obtenha uma lista contendo apenas as tabelas não ocultas no banco de dados executando a seguinte consulta:

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

Etapa 4

Classifique a lista de tabelas não ocultas que não são do sistema usando o seguinte 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 não gosta de ‘MSys * OU.

Use a lista de tabelas no VBA

Passo 1

Carregue sua lista de tabelas em um objeto de conjunto de registros usando o código VBA mostrado abaixo:

Dim rsMisTablas As DAO.Recordset Defina rsMisTablas = CurrentDb.OpenRecordset (‘Minha consulta’)

Etapa 2

Percorra um ciclo através de cada registro obtido na consulta.

Dim rsMisTablas As DAO.Recordset Defina rsMisTablas = CurrentDb.OpenRecordset (‘Minha consulta’)

Código do rsMisTablas.EOF ‘para não manipular informações

loop rsMisTablas.MoveNext

Etapa 3

Adicione os nomes de cada tabela a uma lista suspensa modificando seu ciclo while:

Dim rsMisTablas As DAO.Recordset Defina rsMisTablas = CurrentDb.OpenRecordset (‘Minha consulta’) Me.cmbMiComboBox.Clear

Faça enquanto não rsMisTablas.EOF Me.cmbMiComboBox.AddItem rsMisTablas! [Name]

loop rsMisTablas.MoveNext

Etapa 4

Feche o objeto do conjunto de registros para liberar a memória que está usando:

Dim rsMisTablas As DAO.Recordset Defina rsMisTablas = CurrentDb.OpenRecordset (‘Minha consulta’) Me.cmbMiComboBox.Clear

Faça enquanto não rsMisTablas.EOF Me.cmbMiComboBox.AddItem rsMisTablas! [Name]

loop rsMisTablas.MoveNext

rsMisTablas.Close Set rsMisTablas = Nothing

Referências

 

Você pode estar interessado:

Deixe um comentário