Come fare una query VBA in Access elenca le tabelle in un database
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