Come fare una query VBA in Access elenca le tabelle in un database

Accedi memorizza le informazioni sulla struttura del database nella tabella MSysObjects.

Ottieni un elenco di tavoli

Passaggio 1

Creare una query per eseguire il comando SQL mostrato di seguito. Questa query ottiene un elenco di tutte le tabelle nel database di Access corrente. L'istruzione where usa il numero 1 per indicare che vogliamo solo che le tabelle appaiano.

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

Passaggio 2

Ottenere un elenco contenente solo le tabelle nel database che non provengono dal sistema, con l'esempio fornito di seguito:

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

Passaggio 3

Ottenere un elenco che contenga solo le tabelle non nascoste nel database eseguendo la seguente query:

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

Passaggio 4

Ordina l'elenco delle tabelle non di sistema non nascoste utilizzando il seguente codice 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 Non come 'MSys *' ORDER BY MSysObjects.Name

Utilizzare l'elenco di tabelle in VBA

Passaggio 1

Carica il tuo elenco di tabelle in un oggetto set di record utilizzando il codice VBA mostrato di seguito:

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

Passaggio 2

Scorri un ciclo attraverso ogni record ottenuto nella query.

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

Do While Not rsMisTablas.EOF 'Codice per manipolare le informazioni

rsMisTablas.MoveNext Loop

Passaggio 3

Aggiungi i nomi di ogni tabella a un elenco a discesa che modifica il tuo ciclo while:

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

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

rsMisTablas.MoveNext Loop

Passaggio 4

Chiudi l'oggetto set di record per liberare la memoria che stai utilizzando:

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

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

rsMisTablas.MoveNext Loop

rsMisTablas.Close Set rsMisTablas = Nothing