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

IHM Discussion :

Enregistrer dans une table une valeur sélectionnée dans une liste déroulante


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 53
    Points : 38
    Points
    38
    Par défaut Enregistrer dans une table une valeur sélectionnée dans une liste déroulante
    Bonjour à tous,

    Voilà mon problème :

    J'ai un formulaire non lié qui me sert à enregistrer les infos relatives à un projet.

    'Table_projet'
    => ID_projet (clé primaire)
    => libelle_court
    => Id_famille (clé étrangère)
    => etc...

    'Table_familles'
    => ID_famille (clé primaire)
    => famille

    relation : 'familles' 1 ------------ n 'projet'

    En cliquant sur un bouton 'Enregistrer' j'arrive à récupèrer les données entrées dans mes textboxes grâce à un recordset et a les ajouter à ma table 'Projet'.

    Ce que je n'arrive pas à faire en revanche c'est d'ajouter l'Id_famille dans la table 'projet' qui correspond au nom de la famille sélectionnée dans une liste déroulante dont la requête est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Table_familles.ID_famille, Table_familles.famille 
    FROM Table_familles ORDER BY [famille];
    Je précise que la liste déroulante n'est pas liée et qu'à chaque ouverture du formulaire un nouvel ID_projet est affiché automatiquement.

    Quelqu'un pourrait-il m'aider à résoudre ce problème?
    Merci d'avance.

  2. #2
    Membre régulier
    Femme Profil pro
    Chef de projet informatique
    Inscrit en
    Juillet 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2008
    Messages : 115
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    Essaye avec une requête de cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table_familles.ID_famille 
    FROM Table_familles WHERE Table_familles.famille = ' " & nom_famille & " '
    nom_famille étant la variable qui contient le nom de la famille sélectionné dans ta liste déroulante. Cette requête te permet donc de sélectionner l'id de la famille sélectionnée.

    A+

  3. #3
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 53
    Points : 38
    Points
    38
    Par défaut
    Merci pour ta réponse.

    Mon problème ne vient pas vraiment de la requête qui affiche dans ma liste les noms de ma 'Table_familles'.

    Mais plutôt : comment m'y prendre pour que lorsqu'un nom de famille est sélectionné dans la liste, je puisse récupérer l'ID_famille correspondant et l'ajouter dans l'enregistrement du projet dont j'ai déjà récupéré les autres infos (cf. recordset sur textboxes)?

    ID_famille étant la clé primaire et Id_famille la clé étrangère dans ma table projet. Pour chaque nouveau projet j'enregistre ainsi l'Id du nom de famille sélectionné au lieu du nom lui même.

  4. #4
    Membre régulier
    Femme Profil pro
    Chef de projet informatique
    Inscrit en
    Juillet 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2008
    Messages : 115
    Points : 85
    Points
    85
    Par défaut
    Bin je confirme ma réponse, en fesant la requête que je t'ai donné tu sélectionnes l'id de la famille sélectionnée dans ta liste.

    On va dire que ta liste s'appelle liste_famille, pour trouver l'id du nom de la famille sélectionnée tu écris dans la partie liste_famille_change() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    requete = "SELECT Table_familles.ID_famille 
    FROM Table_familles WHERE Table_familles.famille = ' " & liste_famille.Value & " ' "
    Set resultat = CurrentDb.OpenRecordset(requete)
    id_famille = rst![ID_famille ]
    rst.Close
    Et dans id_famille tu auras l'id de la famille sélectionnée dans ta liste liste_famille.

    A+

  5. #5
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Perso je passe par une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Str1 = ZoneListe.value
    Ensuite dans les requêtes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    WHERE
             ....
             Table.Champs = '" & Str1 & "'
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  6. #6
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 53
    Points : 38
    Points
    38
    Par défaut
    Merci à tous les deux pour vos réponses.

    Voilà le code que j'ai mis sur ma liste dans l'evenement "sur changement" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub LST_creer_proj_familles_Change()
     
        Dim db As Database
        Dim rs1 As Recordset
        Dim chaineSQL As String
     
        Set db = CurrentDb
        chaineSQL = "SELECT Table_familles.ID_famille FROM Table_familles WHERE Table_familles.famille = ' " & LST_creer_proj_familles.Value & " ' "
        Set rs1 = db.OpenRecordset(chaineSQL)
        Id_famille = rs1![ID_famille]
        rs1.Update
        rs1.Close
     
    End Sub
    J'ai une erreur à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Id_famille = rs1![ID_famille]
    Erreur 3021 : Aucun enregistrement en cours

    Je me doutais qu'il y aurait une erreur à cet endroit. J'ai peut-être mal adapter le code que vous m'avez donné.

    Par ailleurs, je ne comprends pas pourquoi on utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rs1 = db.OpenRecordset(chaineSQL)
    et comment enregistrer l'Id_famille obtenu dans ma table Projet vu qu'on y fait jamais référence. A mon avis il faut aussi générer du code dans mon bouton "enregistrer" mais comment?

  7. #7
    Membre régulier
    Femme Profil pro
    Chef de projet informatique
    Inscrit en
    Juillet 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2008
    Messages : 115
    Points : 85
    Points
    85
    Par défaut
    Alors je ne vois pas d'erreur, mais prend en compte le message de Chtulus c'est plus "sûr". Et le update je l'enleverrai, enfin je ne l'utilise paas moi dans ce cas de figure. Ce qui te donnerai :
    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
     
    Private Sub LST_creer_proj_familles_Change()
        Dim db As Database
        Dim rs1 As Recordset
        Dim chaineSQL As String
        Dim nom_famille As String
     
        nom_famille = LST_creer_proj_familles.Value
     
        Set db = CurrentDb
        chaineSQL = "SELECT Table_familles.ID_famille FROM Table_familles WHERE Table_familles.famille = ' " & nom_famille & " ' "
        Set rs1 = db.OpenRecordset(chaineSQL)
        Id_famille = rs1![ID_famille]
        rs1.Close
    End Sub
    Après ça peut venir de l'orthographe de tes champs, vérifie les au cas où...

    Pour l'explication de l'utilisation de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rs1 = db.OpenRecordset(chaineSQL)
    je ne suis pas assez expérimentée pour l'expliquer correctement. Je pense que c'est ce qui permet d'éxécuter la requête mais ce n'est pas sûr...

    Ensuite pour :
    et comment enregistrer l'Id_famille obtenu dans ma table Projet vu qu'on y fait jamais référence. A mon avis il faut aussi générer du code dans mon bouton "enregistrer" mais comment?
    Une fois que tu as la requête qui fonctionne tu peux modifier ta table Projet avec une requête UPDATE où tu insères l'id_famille.

  8. #8
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 53
    Points : 38
    Points
    38
    Par défaut
    Merci pour ta gentillesse. Je vais essayé de creuser le problème.
    Et je reposterai sous peu...

  9. #9
    Membre régulier
    Femme Profil pro
    Chef de projet informatique
    Inscrit en
    Juillet 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2008
    Messages : 115
    Points : 85
    Points
    85
    Par défaut
    Pas de problème, le forum est fait pour s'entraider. On m'a aidé donc j'essaye d'aider du mieux que je peux également.

    A+ en espérant que ça marchera

  10. #10
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 53
    Points : 38
    Points
    38
    Par défaut
    En fait c'est bon, j'ai tout simplement enlever la partie avec la chaine SQL et mis au final dans mon bouton 'enregistrer':

    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
    Dim db As Database
    Dim rs As Recordset
    Dim nom_famille As String
     
    nom_famille = Me.LST_creer_proj_familles.Value
     
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Projet", dbOpenDynaset)
    rs.MoveLast
    rs.Edit
     
    rs![libelle_court] = Me.libelle_court.Value
    '.......... 
    '..........etc
    rs![Id_famille] = nom_famille
     
    rs.Update
    rs.Close
    Donc beaucoup plus simple que ce qu'on pensait .

    Dsl pour le dérangement, si j'avais su que c'était si simple
    En tout cas merci pour ta réactivité (Chtulus également).
    A bientôt

    PS : Un grand merci à ceux (et celles) qui font vivre developpez.com qui est une vraie mine d'infos pour des débutants comme moi.

  11. #11
    Membre régulier
    Femme Profil pro
    Chef de projet informatique
    Inscrit en
    Juillet 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2008
    Messages : 115
    Points : 85
    Points
    85
    Par défaut
    Bonne solution effectivement !

    bonne continuation et à plus tard...

    PS : n'oublie pas de mettre résolu...

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

Discussions similaires

  1. [XL-2010] Controler dans une table si valeur differente d'une autre table
    Par zaza45 dans le forum Excel
    Réponses: 5
    Dernier message: 13/09/2013, 15h19
  2. Réponses: 1
    Dernier message: 05/03/2010, 03h31
  3. Réponses: 5
    Dernier message: 02/10/2009, 16h07
  4. Réponses: 3
    Dernier message: 07/08/2009, 11h59
  5. Réponses: 1
    Dernier message: 16/05/2007, 12h51

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