IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

recuperer les legendes (caption) des champs d'une table


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 61
    Points : 43
    Points
    43
    Par défaut recuperer les legendes (caption) des champs d'une table
    bonjour a tous,

    je souhaiterai recuperer les legendes (propriete Caption) des champs d'une table et les afficher dans un liste deroulante. Mon vrai souci c'est comment faire reference a cette propriete du champ?

    Quant-il s'agit de faire reference au nom des differents champs a recuperer ca va grace a la discussion de Tofalu & Co. http://www.developpez.net/forums/sho...rer+nom+champs

    avec le code final suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Btn_LstChampTbl_Click()
    Dim Db As DAO.Database
    Dim tbd As DAO.TableDef
    Dim fld As DAO.Field
    Set Db = CurrentDb
     
     
    set tbd=db.TableDefs([ZoneDeListe])
        For Each fld In tbd.Fields
            MsgBox "Table : " & tbd.Name & " Colonne : " & fld.Name
        Next
    End Sub
    donc j'aimerai faire exactement la meme chose mais avec Legende/Caption du champ

    alors evidemment quand je remplace fld.Name par fld.Caption ou fld.Properties("caption") ca marche pas, ca serait trop beau.

    j'ai bien trouve une fonction sur un forum anglophone mais j'ai pas reussi a m'en servir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function GetCaption(strTableName As String, strField As String) As Variant
         On Error Resume Next
         GetCaption = DBEngine(0)(0).TableDefs(strTableName).Fields(strField).Properties("caption")
    End Function
    si quelqu'un peut m'aider a faire reference a cette propriete Caption

    merci

  2. #2
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Hello,

    Je pense que le problème vient du fait que tous les contrôles d'un formulaire n'ont pas forcément de "Caption".
    Par exemple, une zone de texte n'offre pas de Caption et au contraire, une Etiquette le contient.

    Je te propose donc de faire un test sur le "ControlType" de ton form et s'il est égal à 100 (Etiquette) lire le "Caption" et s'il est égal à 109 (Zone de texte), lire le "Name"

    Souhaitant avoir "fait avancer le Smilblick"...

    Bernard.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 61
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par bernardmichel Voir le message
    Hello,

    Je pense que le problème vient du fait que tous les contrôles d'un formulaire n'ont pas forcément de "Caption".
    Par exemple, une zone de texte n'offre pas de Caption et au contraire, une Etiquette le contient.

    Je te propose donc de faire un test sur le "ControlType" de ton form et s'il est égal à 100 (Etiquette) lire le "Caption" et s'il est égal à 109 (Zone de texte), lire le "Name"

    Souhaitant avoir "fait avancer le Smilblick"...

    Bernard.

    merci bernard pour ta reponse
    j'ai pas encore tester mais entre-temps j'ai fait quelques tests
    Voila ou j'en suis : j'arrive a afficher les captions/legendes des champs de ma table dans un liste deroulante mais le souci j'ai que la legende d'un seul champ. j'imagine que c'est a cause du module que j'utilise.

    donc il y a le module qui recupere les legendes/caption

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function GetCaption(strTableName As String, strField As String) As Variant
         On Error Resume Next
         GetCaption = DBEngine(0)(0).TableDefs(strTableName).Fields(strField).Properties("caption")
    End Function
    et le code a l'ouverture du formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub Form_Open(Cancel As Integer)
     
    Dim Db As DAO.Database
    Dim tbd As DAO.TableDef
    Dim fld As DAO.Field
    Dim list As String
     
    Set Db = CurrentDb
     
    Set tbd = Db.TableDefs([txtTableName])
        For Each fld In tbd.Fields
        list = GetCaption(txtTableName, fld.Name)
        Next
     
    Me.CboFieldNames.RowSource = list
     
    End Sub
    donc si tu peux m'indiquer (ou quelqu'un d'autre) ou ca coince et ce que je dois faire pour lister toutes les legendes des champs dans la liste deroulante au lieu qu'une seule apparait ca serait genial.

    Merci beaucoup

  4. #4
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Bonjour,

    Si j'ai bien compris, tu veux afficher les libellés des champs d'une table donnée.

    Je pense qu'ADO est bien plus préconisé pour ce type de demande car il existe une propriété Name au champ du recordset ADO.

    Essayes ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
    Dim Cn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim i As Integer
    Dim strQuery, strLa_Table_Que_Tu_Veux As String
     
     
    Set Cn = New ADODB.Connection
     
    Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & _
            "Ton_Chemin\Ta_Base.mdb"
     
    rst.ActiveConnection = Cn
    rst.CursorLocation = adUseClient
    rst.CursorType = adOpenStatic
    rst.LockType = adLockBatchOptimistic
     
    strQuery =  "SELECT * FROM " & strLa_Table_Que_Tu_Veux
     
    rst.Open strQuery
     
    If (Not rst.EOF) Then
         While Not (rst.EOF)
              msgbox rst.Fields(i).Name ' Le libellé de tes Champs s'affichent
              i = i + 1
              rst.MoveNext
         Wend
    End If
    J'espère avoir bien compris ta question...


    PS : N'oublies pas les références

    -> Outils > Régérences et cocher : Microsoft ActiveX Data Objects 2.x Library

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut à tous,

    ton pb viens de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list = GetCaption(txtTableName, fld.Name)
    il te faut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list = list+GetCaption(txtTableName, fld.Name)+";"

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 61
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par vodiem Voir le message
    salut à tous,

    ton pb viens de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list = GetCaption(txtTableName, fld.Name)
    il te faut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list = list+GetCaption(txtTableName, fld.Name)+";"
    Merci beaucoup ça marche impécable.

    Désolé pour le temps de réponse mais j'ai eu le droit à quelques jours de vacances.

    Ed.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/04/2010, 13h54
  2. Réponses: 4
    Dernier message: 05/12/2007, 19h06
  3. Recuperation Nom des Champs d'une table
    Par Djekill dans le forum Access
    Réponses: 2
    Dernier message: 31/07/2006, 15h47
  4. [MySQL] Supprimer les informations des champs dans une table (suite)
    Par snakejl dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 26/05/2006, 15h37
  5. recuperation des nom des champs d'une table
    Par arawak dans le forum Access
    Réponses: 2
    Dernier message: 11/01/2006, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo