Rechercher : dans
Par :

[Access & SQL] nom des colonnes d'une table

Dernière réponse le 18 fév 2009 à 18:33:36 Nicolas, le 16 mar 2006 à 13:58:24 
 Signaler ce message aux modérateurs

Bonjour ,
je developpe une application vba sous Access Xp et j'aurais aimer créer une requete me permettant d'obtenir les noms de colonnes de chaque table dans ma base.

ex: select lib_nomcol from table system where nom_table="dde"

J'ai deja réalisé une requete similaire sous sql server, néanmoins (meme en affichant les objets system) je n'est trouvé aucune tables sous access regroupant ces données.
Les seules informations que j'ai trouvé concerne access 97 et ne fonctionne plus...( dans cette versions une table syscolumns etait presente)

Si quelqu'un avait une idée ,
Merci

Meilleures réponses pour « [Access & SQL] nom des colonnes d'une table » dans :
SQL - Modification de table VoirModification de table Il est possible de supprimer une table grâce à la clause DROP, il existe aussi des commandes moins extrêmes permettant L'ajout de colonnes La modification de colonnes La suppression de colonnes Enfin, il est possible...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...

1

Lupin.A, le 16 mar 2006 à 15:12:36

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.

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

Répondre à Lupin.A

2

Nico, le 16 mar 2006 à 15:20:13

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 :)

Répondre à Nico

3

random, le 22 mar 2006 à 13:41:25

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


elle est pas belle, la vie ?

Répondre à random

5

 jmjousse, le 18 fév 2009 à 18:33:36

Salut random
Tout d'abord g honte d'etre aussi nul en vb !!
j'aimerai realise ce code mais plutot qu'il attaque toutes les tables de la bd je voudrais qu'il le fasse sur une seule !!
Peux tu me dire comment modifier ton code ?
Merci d'avance
jm

Répondre à jmjousse

4

belmekki, le 1 jun 2007 à 16:13:07

J'aimerai savoir comment réaliser une requete qui parmet d'aficher des noms (nom condidat) donnés dont la dernière lettre et saisie au clavier

Répondre à belmekki