Liste des tables
Comment obtenir une liste des tables présentes dans la base de données ?
Lister les tables de la base de données
Tapez le code suivant dans un module quelconque :
1 2 3 4 5 6 7 8 9 |
Function ListeTables() Dim db As DAO.Database, tdf As DAO.TableDef Set db = CurrentDb For Each tdf In db.TableDefs Debug.Print tdf.Name Next tdf Set db = Nothing End Function |
Pour tester, ouvrez la fenêtre de debug (CTRL
+ G
), et tapez-y :
? ListeTables()
et appuyez sur la touche [Entrée]
.
Vous obtiendrez la liste de toutes les tables de votre base, y compris les tables système (celles gérées en interne par Access).
Pour plus de détails sur les références, consultez cette page.
Lister les tables non système
Généralement, la liste qui vous intéresse est celle de vos propres tables, sans les tables système. Dans ce cas, vous pouvez faire un test supplémentaire sur les attributs de la table, ce qui donne :
1 2 3 4 5 6 7 8 9 10 11 |
Function ListeTablesNonSysteme() Dim db As DAO.Database, tdf As DAO.TableDef Set db = CurrentDb For Each tdf In db.TableDefs If (tdf.Attributes And dbSystemObject) = 0 Then Debug.Print tdf.Name End If Next tdf Set db = Nothing End Function |
Jon > La liste peut être affichée dans un objet
ListBox
de formulaire, par exemple. Ou stockée dans une table pour exploitation spécifique. Je viens de poster un nouvel article qui montre tout ça. Bonne lecture !Bonjour,
Est-il possible d’utiliser ce code ailleurs que dans la fenêtre d’exécution?
Je veux dire par là, peut-on utiliser le résultat dans un état, formulaire, contrôle,…
Si oui, comment?
D’avance merci.
noufo > A moins que la requête ne soit une requête Suppression, les enregistrements ne peuvent PAS être effacés. Il y a probablement un enchaînement d’erreurs qui amène à cela…
D’après ce que je peux voir, vous êtes plusieurs à vouloir faire les mêmes choses, et à poster du même serveur. Merci de passer le mot aux autres de lire cette page, et de poster plutôt sur le forum Access plutôt qu’ici, quand ça n’a pas de rapport avec les articles. Ça évitera de disperser les questions, et ce sera plus efficace pour obtenir une réponse. 😉
Sur le forum, merci de formuler les questions le plus clairement possible : on sent dans la formulation (si je peux me permettre, bien sûr) que l’approche d’Access est un peu confuse. 🙂
Excusé si ce n’est pas l’endroit idéal pour poster ma préocupation:
J’ai les T_Clients: CodeClient, Nom, Prenom…..
T_Produits: CodeProduit, Prduit, Prix….
T_Commande: N°commande,IDclient, Date….
Detailcommande:N°Commande,N°produit, PU, Qté, Remise, Tva…
avec lesquelles je souhaite faire des factures clientes.
J’ai des relations avec tétégrité Referrentielle, mise a jour.
Une réquête est basé sur les T_DetailCommand et Produit avec les champs calculés, cependant sur cette réquête, il est impossible de saisir des données, voici le message je ACCESS me renvoi et tous les enregistrements sont automatiquements éffacés.
« Le moteur de base de données microsoft Jet ne peut pas trouver d’enregistrement dans la table DetailCommande avec le champ codeProduit correspondant a la clé ».
Ou encore les données enrégistrées dans la reqête sont automatiquements revoyer dans les tables. A chaque fois que cela arrive je reprend mais c’est toujours la même chose.
Mon souhait est de créer un Formulaire basé sur la table client avec Sous Formulaire basé sur les T_Produits et DetailCommande afin de pouvoir facturé plusieurs Produits a un client. Que dois-je faire? Est que c’est moi organise mal le cheminement? Ou c’est la structure mise en place qui est fausse?
J’espère pouvoir trouvez une reponse qui m’aidéra a poursuivre ce prjet.
PS: c’est ma toute première base de données. votre Livre APPLICATION POUR ACCESS semble m’intéressé