Como fazer uma consulta VBA no Access listar as tabelas em um banco de dados
Obter uma lista de tabelas
Passo 1
Crie uma consulta para executar o comando SQL mostrado abaixo. Essa 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 de MSysObjects WHERE MSysObjects.Type = 1
Passo 2
Obtenha uma lista que tenha apenas as tabelas no 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 de MSysObjects WHERE MSysObjects.Type = 1 e MSysObjects.Name não como 'MSys'
Passo 3
Obtenha uma lista que contenha 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 de MSysObjects WHERE MSysObjects.Type = 1 e MSysObjects.Flags 8
Passo 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 de MSysObjects WHERE MSysObjects.Type = 1 E MSysObjects.Flags 8 E MSysObjects.Name Não Semelhantes 'MSys *' ORDER BY MSysObjects.Name
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 Set rsMisTablas = CurrentDb.OpenRecordset ('MyConsulta')
Passo 2
Percorra um ciclo através de cada registro obtido na consulta.
Dim rsMisTablas As DAO.Recordset Set rsMisTablas = CurrentDb.OpenRecordset ('MyConsulta')
Do While Não rsMisTablas.EOF 'Code para manipular informações
rsMisTablas.MoveNext Loop
Passo 3
Adicione os nomes de cada tabela a uma lista suspensa que modifique seu ciclo:
Dim rsMisTablas Como conjunto DAO.Recordset rsMisTablas = CurrentDb.OpenRecordset ('MyConsulta') Me.cmbMiComboBox.Clear
Do While Não rsMisTablas.EOF Me.cmbMiComboBox.AddItem rsMisTablas! [Name]
rsMisTablas.MoveNext Loop
Passo 4
Feche o objeto do conjunto de registros para liberar a memória que você está usando:
Dim rsMisTablas Como conjunto DAO.Recordset rsMisTablas = CurrentDb.OpenRecordset ('MyConsulta') Me.cmbMiComboBox.Clear
Do While Não rsMisTablas.EOF Me.cmbMiComboBox.AddItem rsMisTablas! [Name]
rsMisTablas.MoveNext Loop
rsMisTablas.Close Set rsMisTablas = Nothing