Jak utworzyć zapytanie VBA w Access liście tabel w bazie danych

Access przechowuje informacje o strukturze bazy danych w tabeli MSysObjects.

Uzyskaj listę tabel

Krok 1

Utwórz zapytanie, aby wykonać polecenie SQL pokazane poniżej. Ta kwerenda uzyskuje listę wszystkich tabel w bieżącej bazie danych programu Access. Instrukcja where używa numeru 1, aby wskazać, że chcemy tylko wyświetlić tabele.

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

Krok 2

Uzyskaj listę, która ma tylko tabele w bazie danych, które nie są z systemu, z przykładem podanym poniżej:

SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags FROM MSysObjects WHERE MSysObjects.Type = 1 AND MSysObjects.Name Nie odpowiada "MSys"

Krok 3

Uzyskaj listę zawierającą tylko tabele nie ukryte w bazie danych, wykonując następujące zapytanie:

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

Krok 4

Sortuj listę niewidocznych niesystemowych tabel za pomocą następującego kodu 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 Nie odpowiada "MSys *" ORDER BY MSysObjects.Name

Skorzystaj z listy tabel w VBA

Krok 1

Załaduj listę tabel do obiektu zestawu rekordów, używając poniższego kodu VBA:

Dim rsMisTablas Jako DAO.Recordset Set rsMisTablas = CurrentDb.OpenRecordset ('MyConsulta')

Krok 2

Przewiń cykl przez każdy rekord uzyskany w zapytaniu.

Dim rsMisTablas Jako DAO.Recordset Set rsMisTablas = CurrentDb.OpenRecordset ('MyConsulta')

Do While Not rsMisTablas.EOF 'Kod do manipulowania informacjami

rsMisTablas.MoveNext Loop

Krok 3

Dodaj nazwy każdej tabeli do listy rozwijanej modyfikującej Twój cykl:

Dim rsMisTablas Jako DAO.Recordset Set rsMisTablas = CurrentDb.OpenRecordset ('MyConsulta') Me.cmbMiComboBox.Clear

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

rsMisTablas.MoveNext Loop

Krok 4

Zamknij obiekt zestawu rekordów, aby zwolnić pamięć, której używasz:

Dim rsMisTablas Jako DAO.Recordset Set rsMisTablas = CurrentDb.OpenRecordset ('MyConsulta') Me.cmbMiComboBox.Clear

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

rsMisTablas.MoveNext Loop

rsMisTablas.Close Set rsMisTablas = Nic