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

Access Discussion :

Récupérer des données dans liste déroulante


Sujet :

Access

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 279
    Points : 85
    Points
    85
    Par défaut Récupérer des données dans liste déroulante
    Bonjour,
    Le problème que je rencontre est lié à une liste déroulante qui fonctionne partiellement c'est à dire que lorsque je sélectionne un enregistrement que je vois dans la liste, il m'affiche la bonne référence que j'ai choisis mais le reste ne correspond pas.
    Le code :
    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 Ref_Change()
     
    Set base = Application.CurrentDb
    Set ligne = base.OpenRecordset("SELECT CodeVariante, Emplacement FROM StocksEm WHERE Ref='" & Ref.Value & "'", dbOpenDynaset)
     
    ligne.MoveFirst
    CodeVariante.Value = ligne.Fields("CodeVariante").Value
    Emplacement.Value = ligne.Fields("Emplacement").Value
     
     
    ligne.Close
    base.Close
    Set ligne = Nothing
    Set base = Nothing
    End Sub
    par exemple j'ai sélectionné la Ref test1 avec CodeVariante = RAL1002 et il m'affiche test1 avec RAL1000
    Nom : pbstock.png
Affichages : 160
Taille : 40,8 Ko
    J'ai l'impression qu'il prend le premier de la liste de la Ref et qu'il l'affiche mais moi je voudrais avoir celui que j'ai sélectionné comment faire s'il vous plait ?
    Merci par avance

    J'ai aussi un autre problème, quand je veux écrire dans ma liste déroulante Ref, il ne veux pas et me génère une erreur hors j'aimerais que cela soit possible, c'est possible ? ?

    Cordialement

  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 047
    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 047
    Points : 24 632
    Points
    24 632
    Par défaut
    Bonjour,

    C'est vague comme description.

    Quel reste ?

    Cordialement,

  3. #3
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    Salut
    En utilisant la mise en jour en cascade des 2 combobox, on peut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub id_art_fk_AfterUpdate()
        Me.code_variant_in.Requery
        Me.code_variant_in.SetFocus
        Me.code_variant_in.Dropdown
        Me.code_variant_in = Me.code_variant_in.ItemData(0)
        Me.emp_stock_in = Me.id_art_fk.Column(3)
        Me.qte_stock_in.SetFocus
    End Sub
    cbo_id_art_fk
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT id_art_fk, tbl_article.ref_art, code_variant_emp, emp_stock_emp, id_stock_emp
    FROM tbl_stockemp INNER JOIN tbl_article ON id_art_fk = tbl_article.id_art
    cbo_code_variant_in
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT code_variant_emp
    FROM tbl_stockemp
    WHERE id_stock_emp = [Formulaires]![frm_stockin]![id_stock_in]
    Images attachées Images attachées  

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 279
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par loufab Voir le message
    Bonjour,

    C'est vague comme description.

    Quel reste ?

    Cordialement,
    Bonjour,
    Pour essayer d'être plus clair, lorsque je sélectionne une Ref dans la liste déroulante il ne me fait pas apparaître la bonne.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 279
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par hyperion13 Voir le message
    Salut
    Re,
    Excusez-moi mais je les met ou les 2 codes avec SELECT ? (les deux derniers ?)

  6. #6
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    re
    les 2 SELECT sont les contenus respectifs des 2 combobox ref/codevariant (sur mon IHM)

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 279
    Points : 85
    Points
    85
    Par défaut
    Re,
    D'accord merci j'essaie (oui car j'ai des doutes sur certains noms de table/champs car on n'a pas les même) de les adapter pour moi
    D'ailleurs j'ai un message d'erreur qui me dit "Expression JOIN non supporté".

  8. #8
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    re,
    Si vous alimentez votre combobox avec la tbl StocksEm comme je le soupçonne cela n'a pas de sens puisqu'au début la tbl est vide.
    Dans mon IHM j'ai une tbl_article d'où le INNER JOIN.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tbl_article (id_art, ref_art)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    StocksEm (Ref, CodeVariante, Emplacement, Qte)
    vs
    tbl_stockemp (id_stock_emp, id_art_fk, code_variant_emp, emp_stock_emp, qte_emp)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    NewStocks (Ref, CodeVariante, Emplacement, Qte, NumBl, Provenance, DateS)
    vs
    tbl_stockin (id_stock_in, id_art_fk, code_variant_in, qte_stock_in, emp_stock_in, num_bl_in, provenance_in, date_in)

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 279
    Points : 85
    Points
    85
    Par défaut
    C'est vrai au début la table est vide mais après elle ne sera normalement plus jamais vide, votre table Article correspond elle a la mienne qui est CodeVariante ? :
    Nom : gtjrg.JPG
Affichages : 130
Taille : 86,6 Ko

    Je suis toujours bloqué par un message : "Expression JOIN non supporté"

  10. #10
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    re
    pour alimenter tes combobox tu dois utiliser la tbl CodeVariant.
    mais d'où vient Réf ?
    Citation Envoyé par william.rodde Voir le message
    C'est vrai au début la table est vide mais après elle ne sera normalement plus jamais vide, votre table Article correspond elle a la mienne qui est CodeVariante ? : Je suis toujours bloqué par un message : "Expression JOIN non supporté"

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 279
    Points : 85
    Points
    85
    Par défaut
    Oui c'est vrai CodeVariante est dans cette table mais je m'étais dit que j'allais aller chercher cette donnée (CodeVariante) dans la table StocksEm (au moment de la mise à jour ajout) car après avoir été choisis au moment de l'entrer de l'enregistrement elle est après aussi dans la table StocksEm (car oui ce n'est qu'au moment de la mise à jour que je souhaite pouvoir sélectionner avec la liste déroulante un enregistrement):
    Nom : ici2.JPG
Affichages : 119
Taille : 33,5 Ko

    Ref vient de ce formulaire :
    Nom : ici.JPG
Affichages : 122
Taille : 35,8 Ko

    Dans ce formulaire on peut soit ajouter une nouvelle référence avec un autre CodeVariante... ou alors mettre à jour un enregistrement déjà existant (en l'occurrence la quantité)
    On passe ici si jamais la Ref n'est pas déjà renseignée ... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                strSql = "INSERT INTO StocksEm (Ref,Qte,NumBl,DateS,Emplacement,Provenance,CodeVariante)" _
                & " SELECT NewStocks.Ref, NewStocks.Qte, NewStocks.NumBl, NewStocks.DateS, NewStocks.Emplacement, NewStocks.Provenance, NewStocks.CodeVariante " _
                & " FROM NewStocks" _
                & " WHERE Ref = '" & rstS.Fields("Ref") & "'"
                CurrentDb.Execute strSql, dbFailOnError
    Si jamais voici ma BDD : https://www.mediafire.com/file/7zfqu...ock.accdb/file

  12. #12
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    re,
    votre approche tient plus du "bricolage" que de l'analyse conceptuelle.
    comme je l'indiquais, si votre bdd est vierge, jamais, si votre combobox Codevriante était alimentée par la tbl StocksEm, pourrait afficher une quelconque valeur.
    elle doit être alimentée par la tbl CodeVariante et non StocksEm.
    vient ensuite la combobox Référence et les mêmes remarques.

    quand vous effectuez des mouvements Entrée, Sortie, Histo quelle est la valeur qui prime (essentielle) CodeVariant ou Référence ?
    quelle est la signification d'attacher Référence à CodeVariant ou inverse?

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 279
    Points : 85
    Points
    85
    Par défaut
    Re,
    En effet c'est vrai si ma BDD est vierge il n'y aurait aucune valeur d'afficher, oui le combobox est bien alimentée par la table CodeVariante vous avez raison je me suis mal exprimé, je voulais dire que après l'insertion de l'enregistrement cette donnée se retrouve également dans la table StocksEm.

  14. #14
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    re
    je suis un peu largué avec votre gestion de stock de produits de ferronnerie.
    dans les mouvements Entrée, Sortie, Stock, etc. quel élément (champ) permet d'identifier le produit que vous mouvementez? CodeVariante ou Référence ?

  15. #15
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 279
    Points : 85
    Points
    85
    Par défaut
    Re,
    Je vais essayer d'expliquer, mon application à donc pour but de gérer le stock et ces pièces possèdent une référence unique à chaque pièce, c'est même pièce peuvent avoir plusieurs couleurs d'où la possibilité d'avoir plusieurs fois la même référence mais pas de la même CodeVariante .
    Moi j'aurais dit que le champ qui permet d'identifier le produit est le champ Ref . Mais pour la mise à jour par exemple j'ai besoin de tester si la Ref est présente donc égale à quelque chose mais aussi la CodeVariante et aussi l'Emplacement pour ne pas modifier un mauvais enregistrement.
    Mais le champ de base qui permet d'identifier est je pense la référence (Ref)

    Comme j'ai x fois la même référence est ce que je changerai pas la recherche sur le champ avec un numéro unique est donc la clé primaire ?
    J'ai pris le champ de ma clé primaire qui est forcément unique et qui était sur NuméroAuto, pour que ça fonctionne j'ai dû changer NumAuto par un autre type seulement maintenant au moment d'insérer des données forcément ça ne fonctionne plus.
    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
    Private Sub IdRef_Change()
    Dim ligne As Recordset: Dim base As Database
    Set base = Application.CurrentDb
    Set ligne = base.OpenRecordset("SELECT Ref, CodeVariante, Emplacement, NumBl FROM StocksEm WHERE IdStocks='" & IdRef.Value & "'", dbOpenDynaset)
    ' IdStocks = Nom de la clé primaire   et IdRef = Nom du champ de la liste déroulante ou je choisis l'enregistrement 
     
    Ref.Value = ligne.Fields("Ref").Value
    CodeVariante.Value = ligne.Fields("CodeVariante").Value
    Emplacement.Value = ligne.Fields("Emplacement").Value
     
     
    ligne.Close
    base.Close
    Set ligne = Nothing
    Set base = Nothing
    End Sub
    Je vais essayer de faire en sorte que pour chaque insertion d'un enregistrement et chaque enregistrement est un numéro unique, qui s'incrémente de 1 et que j'insère et normalement cela devrais fonctionner du moins j'espère je verrais bien de toute manière.

  16. #16
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    re
    ce qui permet d'identifier un produit parmi tous ceux que tu gères dans la bdd est Référence.
    par contre pour chacune des Références tu as des déclinaisons CodeVariante (coloris, laqué/pas laqué comme les canards, un traitement, etc.)
    donc la tbl CodeVariante tu ne peux pas l'assimiler à la tbl_article que j'utilise dans les sub() pour répondre à tes problématiques.
    si on analyse ta tbl_stocksEm
    - 1 ref concerne 1 ou +sieurs codevariante (Réf = test1 -> CodeVariante = RAL1000, RAL1001, RAL1002)
    - 1 codevairante concerne 1 ou +sieurs réf (CodeVariante = RAL1000 -> Réf = AA, AQX, aze, etc)
    on se retrouve avec une relation Naire (+sieurs à +sieurs)
    à mon humble avis, tu devrais créer
    - une tbl_article (id_ref, Reference)
    - une tbl_codevariante (id_codev, CodeVariante)
    - et une tbl_association (id_ass, id_ref_fk, id_codev_fk)

    EDIT 08:36 Quid tbl Stocks ?

  17. #17
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 279
    Points : 85
    Points
    85
    Par défaut
    Re,
    En effet ce que vous me dites à l'air intéressant, mais j'avoue que je n'ai pas fait comme ça.
    Nom : hjho.JPG
Affichages : 98
Taille : 38,4 Ko
    Le champ entouré en rouge est une liste déroulante qui quand je sélectionne l'enregistrement voulu rempli les champs que j'ai décidé (CodeVariante, Emplacement...)
    Comme j'ai besoin d'un numéro unique pour que cela fonctionne j'ai fait en sorte qu'à chaque INSERT le champ Numero s'incrémente de 1 ce qui agis comme si j'avais deux champs NuméroAuto.
    Et j'ai ensuite mis ce code (sur changement) sur cette liste déroulante :

    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
    Private Sub IdRef_Change()
    Dim ligne As Recordset: Dim base As Database
    Set base = Application.CurrentDb
    Set ligne = base.OpenRecordset("SELECT Ref, CodeVariante, Emplacement, NumBl FROM StocksEm WHERE Numero= " & IdRef & " ", dbOpenDynaset)
     
     
    Ref.Value = ligne.Fields("Ref").Value
    CodeVariante.Value = ligne.Fields("CodeVariante").Value
    Emplacement.Value = ligne.Fields("Emplacement").Value
     
     
    ligne.Close
    base.Close
    Set ligne = Nothing
    Set base = Nothing
    End Sub
    Peut être qu'au final je vais me rendre compte que je devrais utilisé votre solution mais pour le moment celle-ci fonctionne

  18. #18
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    re,
    je vous rassure, un jour viendra probablement
    sinon sans forcément passer par DAO puisque votre combobox Ref est alimentée par StocksEM
    A vérifier quand même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.CodeVariante= Me.Ref.Column(x)
    Citation Envoyé par Kyndred40 Voir le message
    ...
    Peut être qu'au final je vais me rendre compte que je devrais utilisé votre solution mais pour le moment celle-ci fonctionne

  19. #19
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 279
    Points : 85
    Points
    85
    Par défaut
    Re,
    Et bes vous aviez raison, mon patron veut choisir directement avec une liste déroulante sur Ref et pas par un intermédiaire comme j'ai fait
    Je vais donc devoir faire votre méthode pour obtenir ce résultat que vous avez :
    Nom : 20230123_1.jpg
Affichages : 90
Taille : 37,9 Ko

  20. #20
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    re
    donc à priori tu dois te baser sur les éléments indiqués dans le Post#16

Discussions similaires

  1. [MySQL] Récupération des données dans liste déroulante dynamique
    Par shenmicke dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 02/09/2009, 16h02
  2. Réponses: 3
    Dernier message: 24/11/2008, 14h09
  3. Réponses: 2
    Dernier message: 16/01/2006, 19h34
  4. Récupérer des données dans une page HTML
    Par newdelirium dans le forum Langage
    Réponses: 3
    Dernier message: 26/10/2005, 19h18
  5. Récupérer des données dans excel
    Par alexia2 dans le forum MFC
    Réponses: 1
    Dernier message: 19/05/2005, 15h34

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