[Access & SQL] nom des colonnes d'une table
Résolu/Fermé
A voir également:
- [Access & SQL] nom des colonnes d'une table
- Table ascii - Guide
- Table des matières word - Guide
- Comment faire des colonnes sur word - Guide
- Déplacer une colonne excel - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
4 réponses
Utilisateur anonyme
16 mars 2006 à 15:12
16 mars 2006 à 15:12
Bonjour,
A défaut d'une requête SQL, ce petit code VBA vous permettra
de connaître les noms de colonne !
Ce code est insérer dans un formulaire qui pointe sur une
requête globale d'une table.
Lupin
A défaut d'une requête SQL, ce petit code VBA vous permettra
de connaître les noms de colonne !
Ce code est insérer dans un formulaire qui pointe sur une
requête globale d'une table.
Private Sub ExecuteRoutine_Click() On Error GoTo Err_ExecuteRoutine_Click Dim NombreChamps, Boucle As Integer NombreChamps = Me.Recordset.Fields.Count For Boucle = 0 To (NombreChamps - 1) MsgBox Me.Recordset.Fields(Boucle).Name Next Boucle Exit_ExecuteRoutine_Click: Exit Sub Err_ExecuteRoutine_Click: MsgBox Err.Description Resume Exit_ExecuteRoutine_Click End Sub
Lupin
L'idée est bonne merci, je ne connaissais pas la propriété name du recordset!
Néanmoins devant obtenir tout les noms de champs de la base, une requete select* from toute les tables serait tres couteuse en memoire vive a mon avis (la base est assé lourde).
J'ai trouvé une procedure de ce type la qui a mon avis serais plus adaptée:
Public Sub test()
Dim Db As DAO.Database
Dim tbd As DAO.TableDef
Dim fld As DAO.Field
Set Db=CurrentDb
For Each tbd In Db.TableDefs
For Each fld In tbd.Fields
MsgBox "Table : " & tbd.Name & " Colonne : " & fld.Name
Next
Next
End Sub
Merci , lupin , fidele a ton poste tu as quasiment répondus a chacune de mes questions :)
Néanmoins devant obtenir tout les noms de champs de la base, une requete select* from toute les tables serait tres couteuse en memoire vive a mon avis (la base est assé lourde).
J'ai trouvé une procedure de ce type la qui a mon avis serais plus adaptée:
Public Sub test()
Dim Db As DAO.Database
Dim tbd As DAO.TableDef
Dim fld As DAO.Field
Set Db=CurrentDb
For Each tbd In Db.TableDefs
For Each fld In tbd.Fields
MsgBox "Table : " & tbd.Name & " Colonne : " & fld.Name
Next
Next
End Sub
Merci , lupin , fidele a ton poste tu as quasiment répondus a chacune de mes questions :)
random
Messages postés
1612
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
30 mars 2006
155
22 mars 2006 à 13:41
22 mars 2006 à 13:41
ben normalement on fait
sub mestablesmaschamps
dim x as dao.database
dim y as dao.tabledef
dim z as dao.field
set x=currentdb()
for each y in x.tabledefs
msgbox("la table " & y.name & "a les champs suivants :")
for each z in y
msgbox(z.name 'ici on peut scruter les autres propriétes de l'objet field)
next z
next y
end sub
il est bon de prévoir un test pour écarter les tables systèmes
sub mestablesmaschamps
dim x as dao.database
dim y as dao.tabledef
dim z as dao.field
set x=currentdb()
for each y in x.tabledefs
msgbox("la table " & y.name & "a les champs suivants :")
for each z in y
msgbox(z.name 'ici on peut scruter les autres propriétes de l'objet field)
next z
next y
end sub
il est bon de prévoir un test pour écarter les tables systèmes
Modifié par salem le 22/08/2011 à 04:08
Pour lister tous les champs de chaque table ou de toutes les tables d'une MDB en cours
Nécessaire et obligatoire
Menu principal : Outils - Références
Coché : Microsoft DAO 3.6 Objet Library
Sub Tables_et_champs()
'Déclaration des variables
Dim dbd As DAO.Database
Dim tbd As DAO.tabledef
Dim fld As DAO.Field
'Prise en main de la MDB en cours
Set dbd = CurrentDb
'Pour chaque table de la MDB en cours
For Each tbd In dbd.TableDefs
'Pour chaque champ dans chaque table
For Each fld In tbd.Fields
'Affiche dans la fenêtre exécution (Menu principale : Affichage)
Debug.Print "Table : " & tbd.name & " Colonne : " & fld.name
Next
Next
Set dbd = Nothing
End Sub
Salem