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 :

Propriétés d'un champ dont le nom est une variable


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut Propriétés d'un champ dont le nom est une variable
    Bonjour,
    Dans le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      Dim MaBd As DAO.Database
      Dim MaTable As DAO.TableDef
      Dim chp As DAO.Field
     Set MaBd = CurrentDb 
     Set MaTable = MaBd.TableDefs(strNom)
    Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset(strNom)
    Dim vchp As Variant
    With rst
      For Each chp In MaTable.Fields
           vchp = chp.OrdinalPosition
           'Traitement de vchp
     next
    end with
    on récupère bien la valeur de la position du champ.
    Si on remplace ligne 11 "OrdinalPosition" par "Value", rien ne va plus.
    Erreur 3219 : opération invalide.
    Or Value est une des propriétés de chp.
    Avec Name, pas d'erreur

    Pourquoi ?
    Merci de l'aide
    Amicalement

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Je me réponds : Ca ne peut pas fonctionner, parceque je n'ai pas défini l'enregistrement pour lequel je recherche la valeur.

    Il faut récupérér les noms des champs dans une table par ex, puis fermer la MaTable et la réouvrir avec le "do while not .EOF" pour parcourir tous les enregistrements.

    J'essaie ...
    Avec mes excuses pur ma précipitation.
    A+

  3. #3
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 48
    Points
    48
    Par défaut
    Bonjour,
    il y aurait peut-être un .MoveNext à rajouter. Un truc comme ça devrait mettre dans vchp successivement les valeurs contenues dans le jeu de données de ta table, en la parcourant ligne par ligne et de gauche à droite. Enfin.. si on n'a pas modifié l'ordre des colonnes à l'affichage. J'imagine que l'ordre à l'affichage en mode 'feuille de données' et l'ordre intrinsèque des colonnes sont deux choses distinctes et qu'on peut modifier l'un sans altérer l'autre.

    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
    Dim MaBd As DAO.Database
    Dim MaTable As DAO.TableDef
    Dim chp As DAO.Field
     
    Set MaBd = CurrentDb 
    Set MaTable = MaBd.TableDefs(strNom)
     
    Dim rst As DAO.Recordset
    Set rst = MaTable.OpenRecordset
     
    Dim vchp As Variant
    With rst
     Do While Not .EOF
       For Each chp In rst.Fields
           vchp = chp.Value
           'Traitement de vchp
       next
       .MoveNext
     Loop
    end with

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 016
    Points : 24 551
    Points
    24 551
    Par défaut
    Bonjour,

    En effet Value est bien une propriété de Recordset.Fields mais par de Tabledefs.fields


    Ne pas oublier Resolu.

    Cordialement,

Discussions similaires

  1. Module dont le nom est une variable
    Par Mr Hyde dans le forum Général Python
    Réponses: 11
    Dernier message: 26/02/2023, 20h39
  2. Réponses: 10
    Dernier message: 02/07/2021, 17h44
  3. Appel de procédure dont le nom est une variable
    Par TOF1414 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 29/08/2012, 16h36
  4. [PowerShell] Acces variable dont le nom est une variable
    Par marion782 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 12/09/2011, 11h16
  5. Instancier une classe dont le nom est une variable
    Par bendev dans le forum Langage
    Réponses: 1
    Dernier message: 06/11/2006, 06h01

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