Cum se face o interogare VBA în Access lista tabele într-o bază de date

Accesul stochează informații despre structura bazei de date în tabela MSysObjects.

Obțineți o listă de tabele

Pasul 1

Creați o interogare pentru a executa comanda SQL prezentată mai jos. Această interogare obține o listă cu toate tabelele din baza de date curentă din Access. Instrucțiunea unde utilizează numărul 1 pentru a indica faptul că dorim să apară doar tabelele.

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

Pasul 2

Obțineți o listă care are doar tabelele din bază de date care nu sunt din sistem, cu exemplul furnizat mai jos:

SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags FROM MSysObjects WHERE MSysObjects.Type = 1 ȘI MSysObjects.Name nu ca "MSys"

Pasul 3

Obțineți o listă care conține numai tabelele care nu sunt ascunse în baza de date executând următoarea interogare:

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

Pasul 4

Sortați lista tabelelor non-ascunse care nu sunt ascunse folosind următorul cod SQL:

SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags FROM MSysObjects WHERE MSysObjects.Type = 1 ȘI MSysObjects.Flags 8 ȘI MSysObjects.Name nu ca "MSYS *" ORDER BY MSysObjects.Name

Utilizați lista tabelelor din VBA

Pasul 1

Încărcați lista de tabele într-un obiect setat de înregistrare folosind codul VBA prezentat mai jos:

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

Pasul 2

Derulați printr-un ciclu prin fiecare înregistrare obținută în interogare.

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

În timp ce nu rsMisTablas.EOF "Cod pentru a manipula informații

rsMisTablas.MoveNext Loop

Pasul 3

Adăugați numele fiecărui tabel într-o listă derulantă care vă modifică ciclul în timp:

Dim rsMisTablas Ca set DAO.Recordset rsMisTablas = CurrentDb.OpenRecordset ('MyConsulta') Me.cmbMiComboBox.Clear

În timp ce nu rsMisTablas.EOF Me.cmbMiComboBox.AddItem rsMisTablas! [Nume]

rsMisTablas.MoveNext Loop

Pasul 4

Închideți obiectul setului de înregistrări pentru a elibera memoria pe care o utilizați:

Dim rsMisTablas Ca set DAO.Recordset rsMisTablas = CurrentDb.OpenRecordset ('MyConsulta') Me.cmbMiComboBox.Clear

În timp ce nu rsMisTablas.EOF Me.cmbMiComboBox.AddItem rsMisTablas! [Nume]

rsMisTablas.MoveNext Loop

rsMisTablas.Close Set rsMisTablas = Nimic