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 :

Récupérer la valeur de la 2ème colonne d'un champ contenant 3 colonnes issues d'une relation [AC-2010]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Récupérer la valeur de la 2ème colonne d'un champ contenant 3 colonnes issues d'une relation
    Bonjour,

    Etant nouveau sur ce forum, je tiens tout d'abord à remercier tous les modérateurs et contributeurs de ce site qui est pour moi (débutant en vba access) une véritable mine d'or. Malheureusement après 2 jours de recherches infructueuses, je me résous à exposer mon problème:

    J'ai une table Personne dans laquelle j'ai une liste de locataires, j'ai une autre table Biens avec une liste d'appartement. Dans cette dernière table j'ai établis une relation avec la 1ère table en prenant les colonnes ID, nom, prénom que je mets dans la colonne Locataire de ma table Immobilier (graçe à l'assistant liste de choix). Ainsi je peux choisir un locataire dans cette liste à affecter à un appartement.

    Je souhaiterai récupérer le champ nom pour l'afficher dans un textbox d'un formulaire mais je ne parviens qu'à retourner la valeur de l'ID. Comment puis-je obtenir le nom associé se situant dans la 2ème colonne.

    Voici mon code:

    Code vba : 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
    ''''''''''''Lire un enregistrement dans BDD
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
    Dim IDadresse As Integer
    Set oDb = CurrentDb
    IDadresse = Me.btn_adresse_bien.Column(0)
    Set oRst = oDb.OpenRecordset("SELECT * FROM Biens WHERE biens_N°=" & IDadresse, dbOpenDynaset)
     
    'La valeur retournée est l'ID de la personne or je voudrais son nom ??
        Me.edit_locataire1.Value = oRst.Fields("biens_locataire_1")
     
    oRst.Close
    oDb.Close
    Set oRst = Nothing
    Set oDb = Nothing
     
    End Sub

    Merci d'avance pour votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 064
    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 064
    Points : 24 673
    Points
    24 673
    Par défaut
    Bonjour,

    Pour accéder aux colonnes d'une liste ou d'une liste déroulante il faut utiliser la propriété column, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    me.maliste.column(0)  'retourne la 1er colonne
     
    me.maliste.column(10) 'retourne la 11ème colonne
    Cordialement,

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Merci pour votre aide mais je souhaite récupérer la valeur "nom" de mon champ biens_locataire_1 (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oRst.Fields("biens_locataire_1")
    ) contenant 3 colonnes issue d'une relation ("ID", "nom", "prénom"). Pour l'instant il me retourne l'"ID", j'ai essayé en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oRst.Fields("biens_locataire_1").column(1)
    mais ça ne fonctionne pas.

    Cordialement

  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 064
    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 064
    Points : 24 673
    Points
    24 673
    Par défaut
    column n'est pas une propriété de DAO.fields mais des zones liste.

    La liste de locataire ne serait donc pas une liste mais un recordset ?!

    Dans ce cas il suffit de donner le bon nom de champ au fields.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Le nom du champ que j'essaie de récupérer est bien "biens_locataire_1" mais dans ce champs il y a 3 colonnes (ID, nom, prénom) et je souhaiterai obtenir le nom et pas l'ID. J'ai mis en pièce jointe un exemple du champ que j'aimerais récupérer.

    Nom : Exemple.png
Affichages : 1559
Taille : 24,5 Ko

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 064
    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 064
    Points : 24 673
    Points
    24 673
    Par défaut
    Tu utilises des champs multivalués, c'est par cette information qu'il fallait commencer.

    Voici un tuto qui va surement t'aider :

    http://warin.developpez.com/access/multivalue/

    Cordialement,

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Effectivement après lecture du tuto j'aurai dû commencer par là
    Cependant je ne parviens malheureusement toujours pas à atteindre cette maudite colonne, il me fait une erreur "Elément non trouvé dans cette collection" quand j'essaie d'atteindre la colonne contenant le nom (oRstChamp.Fields(1)).

    Code vba : 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
    Dim oRst As DAO.Recordset, oRstChamp As DAO.Recordset
    Dim oDb As DAO.Database
    Dim IDpersonne As Integer
    Set oDb = CurrentDb
    IDadresse = Me.btn_adresse_bien.Column(0)
    Set oRst = oDb.OpenRecordset("SELECT * FROM Biens WHERE biens_N°=" & IDadresse, dbOpenDynaset)
     
    'J'ouvre un recordset sur le champ multi-valué
    Set oRstChamp = oRst.Fields("biens_locataire_1").Value
     
    'J'affecte le contenu de la colonne contenant le nom du locataire dans l'editbox de mon formulaire
    Me.edit_locataire1.Value = oRstChamp.Fields(1)
     
    oRstChamp.Close
    oRst.Close
    oDb.Close
    Set oRst = Nothing
    Set oDb = Nothing

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 064
    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 064
    Points : 24 673
    Points
    24 673
    Par défaut
    Je me demande si tu te compliques pas la tâche.

    Dans ton formulaire d'affichage, pour choisir ton locataire, logiquement tu devrais avoir une liste déroulante avec le contenu de la table Personnes et au moins les 3 colonnes ID, nom, prénom.

    Pourquoi ne fais-tu pas simplement ceci pour renseigner ta zone de texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.mazonedetexte = me.listeLocataire.column(1)
    Sans ouvrir de recordset puisque tu as déjà l'information dans la liste déroulante de sélection.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour,


    N'ayant pas réussi j'ai donc contourné le problème en ouvrant un premier recordset sur la table "biens"vou je récupère l'ID puis en ouvrant un 2ème recordset sur la table "personne" où je récupère son nom. Je peux donc ainsi afficher le nom dans le champ "Me.edit_locataire1.Value".

    Je passe en résolue.

    Merci @loufab

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

Discussions similaires

  1. Calcul avec une valeur issue d'une relation
    Par malumiere dans le forum W4 Express
    Réponses: 5
    Dernier message: 16/05/2012, 12h58
  2. [MySQL] ajouter une colonne C à un tableau contenant 2 colonnes A et B
    Par sandrine74 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/01/2009, 08h12
  3. Trigger : Récupérer la valeur par défaut d'une colonne
    Par mcspr2002 dans le forum Administration
    Réponses: 5
    Dernier message: 12/01/2007, 13h53
  4. Récupérer la valeur d'une colonne de la ligne d'un DBGrid
    Par Oluha dans le forum Bases de données
    Réponses: 4
    Dernier message: 10/10/2005, 10h22
  5. récupérer la valeur du 2ème champ dans un DBLookUpListBox
    Par jakouz dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/07/2004, 16h45

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