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 :

[VBA-A]noms des champs d'un recordset


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut [Resolu] [VBA-A]noms des champs d'un recordset
    Bonjour,

    J'essaie, dans une application vba Access, de lister les noms des champs d'un recordset rempli à partir d'une requête SQL.


    Dans la doc d'access, j'ai trouvé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Sub Imprime_Noms_Champs()
          Dim rst As DAO.Recordset, entI As Integer
          Dim champ As Field
     
          Set rst = Me.Recordset
          For Each champ in rst.Fields
              ' Imprime les noms des champs.
              Debug.Print champ.Nom
          Next
      End Sub
    Cet exemple porte sur les champs d'un formulaire, et ne semble pas pouvoir être transposé dans mon cas.


    Si j'essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub maRoutine()
          Dim rs As DAO.Recordset, champ As Field
     
          Set rs = CurrentDb.OpenRecordset("select * from uneTable")
     
          For Each champ In rs.Fields
              MsgBox champ.Name, vbOKOnly, "Essai"
          Next
     
          rs.Close
      End Sub
    Access me répond "Erreur d'exécution '13' : Incompatibilité de type"
    et me pointe la ligne "For Each champ In rs.Fields".

    Le survol de cette ligne m'apprend que champ=Nothing.


    Où me trompé-je ?

    [Balises de code rajoutées par Thierry AIM, Merci d'y penser la prochaine fois]

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Et comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i = 0 to rst .Fields.count - 1
       Debug.print rst .Fields(i).Name
    next

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 46
    Points : 55
    Points
    55
    Par défaut
    A priori tu as oublié : L'initialisation de la variable !

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Set rs = CurrentDb.OpenRecordset("select * from uneTable")
    pas de ; ??
    admettons derrière essaye
    de faire msgbox rs.recordcound
    et déclare champ en variant

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    C'est bon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub maRoutine()
        Dim rs As DAO.Recordset, i As Integer
     
        Set rs = CurrentDb.OpenRecordset("select * from maTable")
        rs.MoveFirst
     
        For i = 0 To rs.Fields.Count - 1
           MsgBox rs.Fields(i).Name, vbOKOnly, "Essai"
        Next
     
        rs.Close
    End Sub

    Merci à tous.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par random
    pas de ; ??
    Non : access semble assez permissif...
    Mais je vais en mettre un ; c'est plus propre.

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

Discussions similaires

  1. [VBA]Récuperer nom des champs
    Par fabiolous dans le forum VBA Access
    Réponses: 7
    Dernier message: 11/06/2007, 11h58
  2. Réponses: 13
    Dernier message: 28/11/2006, 08h40
  3. Modifier les noms des champs sous VBA
    Par shadockgreg dans le forum Access
    Réponses: 2
    Dernier message: 22/09/2006, 17h50
  4. nom des champs d'une table
    Par K-ZimiR dans le forum Requêtes
    Réponses: 6
    Dernier message: 22/04/2004, 14h21
  5. comment recuperer le nom des champs ?????
    Par e11137 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/01/2004, 10h00

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