Comment faire une requête VBA dans Access lister les tables dans une base de données
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