Comment faire une requête VBA dans Access lister les tables dans une base de données

Access stocke des informations sur la structure de la base de données dans la table MSysObjects.

Obtenir une liste de tables

Étape 1

Créez une requête pour exécuter la commande SQL indiquée ci-dessous. Cette requête obtient une liste de toutes les tables de la base de données Access actuelle. L'instruction where utilise le nombre 1 pour indiquer que nous souhaitons uniquement que les tables apparaissent.

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

Étape 2

Obtenez une liste contenant uniquement les tables de la base de données qui ne proviennent pas du système, avec l'exemple fourni ci-dessous:

SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags DE MSysObjects WHERE MSysObjects.Type = 1 ET MSysObjects.Flags DE MSys '

Étape 3

Obtenez une liste contenant uniquement les tables non masquées dans la base de données en exécutant la requête suivante:

SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags DE MSysObjects Ob MSysObjects.Type = 1 ET MSysObjects.Flags 8

Étape 4

Triez la liste des tables non système non masquées à l'aide du code SQL suivant:

SELECT MSysObjects.Name, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.Type, MSysObjects.Flags DE MSysObjects OERE MSysObjects.Type = 1 ET MSysObjects.Types

Utiliser la liste des tables en VBA

Étape 1

Chargez votre liste de tables dans un objet de jeu d'enregistrements à l'aide du code VBA présenté ci-dessous:

Dim rsMisTablas As DAO.Recordset Définissez rsMisTablas = CurrentDb.OpenRecordset ('MyConsulta')

Étape 2

Faites défiler un cycle à travers chaque enregistrement obtenu dans la requête.

Dim rsMisTablas As DAO.Recordset Définissez rsMisTablas = CurrentDb.OpenRecordset ('MyConsulta')

Do While Not rsMisTablas.EOF 'Code pour manipuler des informations

Boucle rsMisTablas.MoveNext

Étape 3

Ajoutez les noms de chaque table à une liste déroulante modifiant votre cycle while:

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

Ne pas rsMisTablas.EOF Me.cmbMiComboBox.AddItem rsMisTablas! [Nom]

Boucle rsMisTablas.MoveNext

Étape 4

Fermez votre objet de jeu d'enregistrements pour libérer la mémoire que vous utilisez:

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

Ne pas rsMisTablas.EOF Me.cmbMiComboBox.AddItem rsMisTablas! [Nom]

Boucle rsMisTablas.MoveNext

rsMisTablas.Close Set rsMisTablas = Rien