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 :

[Formulaire] màj d'une liste déroulante selon un choix


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut [Formulaire] màj d'une liste déroulante selon un choix
    Bonjour

    J'ai un petit souci dont la solution ne doit pas etre compliquée mais je ne trouve pas :

    En fait j'ai un formulaire avec une liste déroulante de switch. Après avoir choisi un switch, je choisi un port disponible dans une autre liste déroulante. Jusqu'ici tout va bien.

    Sauf que si je choisi un switch puis un port et que je m'aperçoi que j'ai selectionné le mauvais switch au départ et donc que je change de switch, la liste déroulante des ports disponibles ne se met pas à jour....

    comment faire ??

  2. #2
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    A tu essayer de mettre un Requery sur ta liste Switch pour mettre ta liste des ports a jour
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Nom de la Liste Port.Requery
    Tu peut essayer se code sur l'evenement (Sur Changement)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Merci pour ta réponse Renardo, ça fonctionne nikel. Je savais que c'était pas bien compliqué mais je ne savais pas quel propriété appliquée

    Maintenant j'ai un petit souci que je ne comprends pas :
    En fait dans ma liste déroulante de Switch, j'ai appliqué un code pour que l'utilisateur n'eai que le choix entre les switchs de l'etage concerné ET systématiquement tous les switchs d'imprimante.
    Lorsque je choisi un switch classique, ma liste déroulante de ports disponibles fonctionne mais dès que je choisi un switch d'imprimante, là ma liste déroulante de ports me donne tous les ports du switch dispos ou non !!

    je vous met le code utilisé pour ma liste déroulante de switch, je l'ai parcourue et j'ai pas vu ce qui clochait, peut etre que vous, ça vous sautera a l'oeil lol : (il faut savoir qu'un numéro de prise à la forme 0000 A ou B et que le 1er caractère est l'etage)

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Sub Form_Load()
    Dim StrSql
    Dim num
    'A l'ouverture du formulaire on veut que le formulaire se positionne sur un nouvel enregistrement
    DoCmd.GoToRecord , , acNewRec
    'On veut que la variable num soit egale au résultat du champ Prise
    num = Forms!F_Prise!Prise.Value
    'On dit à Access de selectionner le premier caractère en partant de la gauche (pour définir l'Etage)
    num = Left(Forms!F_Prise!Prise, 1)
    'Si la création de prise concerne le 7e etage, celle-ci prendra sa ressource au 6e etage
    If num = "7" Then
        num = "6"
    Else
        num = Left(Forms!F_Prise!Prise, 1)
    End If
    StrSql = "SELECT [N° Switch] from R_AJOUT_PRIZ WHERE (mid([N° Switch],7,1) = " & num & ") OR [Type de Switch] = " & "'Imprimante'" & ";"
    'On affiche les Switchs dans la zone de liste Switch
    Switch.RowSource = StrSql
    End Sub
     
    Private Sub Switch_AfterUpdate()
    dim essai
    test = Me.Switch.Value
    MsgBox test
    essai = "SELECT [Port Switch] FROM R_RCH_PRIZ WHERE [Switch d'Etage] = '" & test & "' ORDER by 1;"
    Me.LISTE_PORT.RowSource = essai
     
     
    Private Sub Switch_Change()
     
    Me.LD_PORT.Requery
     
    End Sub

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Bonjour

    Bon j'ai réussi à régler mon souci. En fait j'ai refait ma base du début, et avec quelque chose de propre ça fonctionne. Maintenant je me retrouve devant deux soucis, je m'explique :

    En fait je veux que l'utilisateur passe obligatoirement par le formulaire F_RCH_PRIZ pour éviter les erreurs de saisies de numéro de prises...
    A partir de là, si la prise existe, l'utilisateur est renvoyé vers le formulaire F_DETAIL_SWITCH qui lui donne les infos précise sur le Switch concerné, ca c'est bon ;-) Si la prise n'existe pas, une Msgbox propose de la créer et renvoi vers le formulaire F_NVEL_PRIZ et c'est là-dessus que j'ai deux problèmes :
    - je veux qu'Access se place sur un nouvel enregistrement, ce qu'il fait, mais impossible d'enregistrer la nouvelles prise crée, je comprends pas pourquoi (j'ai 782 enregistrement, à l'ouverture le formulaire il se place sur le783 donc ça c'est bon mais impossible de l'enregistrer)...
    - Après avoir choisi un Switch, ma liste déroulante me propose bien les ports disponibles, mais impossible de le sectionner et l'erreur qui s'affiche dans la barre d'état, je ne la comprend pas non plus...
    l'erreur est : "Impossible d'ajouter des enregistrements; la clé de jointure de la table T_PORT n'apparait pas dans l'ensemble des enregistrements"

    Please help !!!

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Bonjour

    Bon je n'ai pas eu beaucoup de réponses mais je reviens vers vous car j'ai un souci qui persiste :

    - je veux qu'Access se place sur un nouvel enregistrement, ce qu'il fait, mais impossible d'enregistrer la nouvelles prise crée, je comprends pas pourquoi (j'ai 782 enregistrement, à l'ouverture le formulaire il se place sur le783 donc ça c'est bon mais impossible de l'enregistrer)...

    C'est ça où je suis bloqué. Maintenant je vous met le code qui me permet de me placer sur un nouvel enregistrement à 'louverture du formulaire, peut etre qu'il manque un attribut ou une toute petite chose qui fait que je ne peux pas enregistrer... PLEASE HELP !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Load()
     
    'A l'ouverture du formulaire on veut se placer sur un nouvel enregistrement
    DoCmd.GoToRecord , , acNewRec
    End sub

  6. #6
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Si tu enleve le code cela marche quand tu cree un nouvelle enregistrement?
    si oui Enleve le code et met celui si sur le bouton qui ouvre le form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.OpenForm "NomDuForm", acNormal, "", "", , acNormal
        DoCmd.GoToRecord , "", acNewRec
    je ne sais pas si cela marchera mais sa coute rien d'essayer

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Merci Renardo pour ta réponse

    Je vais juste t'expliquer comment est fait mon formulaire :
    C'est un formulaire qui me sert à créer une prise au cas où elle n'existe pas. Ce formulaire dépend d'un 1er formulaire (form de recherche de prises) et ne peut etre exécuté directement.
    Il y a le champ Prise dont la valeur est récupérée du 1er formulaire (en gros, on cherche une prise, si elle existe on a les infos dessus sinon on est invité à la créer et c'est là que se lance le 2e formulaire)
    Ensuite les autres champs (N° Switch, Port...) sont contenus dans une requete sur une seule table.

    Si tu veux, si j'enlève le code, ça marche sauf que ça me remplace le 1ere enregistrement de ma table (vu que le champ Prise du form est récupéré) mais les infos sont bien enregistrés.

    Donc merci pour ton conseil, je vais testé ça... après le repas

    Bon ap

  8. #8
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Si je comprend bien meme manuelement tu ne peut pas ajouter un nouvelle enregistrement?
    La source de ton form est une Requete?
    si oui peut tu ajouter des enregistrements dans cette requete?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    En fait, si je veux ajouter un enregistrement directement dans la table ou dans la requete, ça marche très bien. Je vais tester ton code mais je suis persuadé que le code que moi javais mis, c'est ça qui fait foirer le tout car à partir du moment on j'enleve ce code (cf. le code en commentaire 5), les enregistrements marchent très bien, mais j'ai besoin de me placer directement sur un nouvel enregistrement à l'ouverture du formulaire pour deux raisons :
    -il dépend de mon 1er formulaire de recherche de prises
    -sinon il remplace la première occurence de ma table, car le champ Prise de mon formualire en question est un champ indépendant dont le contenu est récupéré du 1er formulaire...

    la source de mon formulaire est bien une requete et comme di juste un peu plus haut, oui je peux ajouter un enregistrement manuellment à cette requete.
    Voilà, j'essai d'etre le plus précis possible, quitte à me répeter...

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    J'ai tester

    Meme avec ta proposition de code, j'ai exactement le meme effet c'est à dire que le formulaire s'ouvre bien sur un nouvel enregistrement, mais impossible d'enregistrer...

    je vais un peu m'amuser avec docmd, pour moi, ça vient de là => pas la bonne propriété ou autre...

  11. #11
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Serait'il pas plus pratique de passer par un sous Form?

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Ba passer sous un sous formulaire, oui ça fonctionnerai peut etre mais je préfère rester dans une logique de "une action = un formulaire" car la base sera, déstinée au final, à des utilisateurs qui ne connaissent strictement rien à Access et j'ai voulu faire comme cela dans un souci de clareté pour eux.

    Au moins chaque chose (recherche d'une prise, création etc...) est visuellement claire pour eux...

    Je sais je suis chiant

  13. #13
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    A tu une erreur d'afficher quand il refuse d'enregistrer?
    Modifit tu la table du form 1 si tu enregistre?
    Le form1 Reste t'il ouvert quand tu enregistre Le form2?
    (pas evdent de trouver quand on a pas la base devant soi)

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Ba ecoute, non je n'ai ni erreur, ni quoique ce soit qui se modifie dans ma table. Et les 2 formulaires restent ouverts...

    En gros, quand je veux enregistrer, rien ne se passe, ni modif dans quoique ce soi, ni fermeture de quoique ce soi...

    Oui lol, je pense bien que c'est pas evident quand on a pas main mise sur la base. J'ai testé ps mal de combinaison de code cet aprem, mais je trouve pas le souci...

  15. #15
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Quelle est le lien entre tes 2Form?
    tu dit aussi que quand tu es en manuel tu arrive sur le premier enreg mais peut tu en creer un nouveau enreg?
    ou encore si tu ouvre ton form2 en laissant fermer le form1 sa donne quoi?

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Ba mon lien se fait via un bouton "Recherche" qui recherche la prise que l'on veut. Si elle existe les infos s'affichent sinon on est renvoyé vers le 2e formulaire de création de prise...

    quand je dis que je peux ajouter un enregistrement manuellement, c'est à dire que quand je vais dans ma requete, je peux créer un nouvel enregistrement en me plaçant sur l'enregistrement suivant...

    lorque je vais directement sur le 2e formulaire sans passer par le 1er, ba je ne peux pas inscrire la nouvelle prise car ce champ, dans mon 2e formulaire, récupère la variable prise de mon 1er formulaire...

Discussions similaires

  1. [MySQL] Remplir une liste déroulante selon une autre liste déroulante
    Par mawkli dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/03/2008, 14h18
  2. faire une liste déroulante selon une autre liste
    Par PtiteNanou dans le forum Modélisation
    Réponses: 7
    Dernier message: 15/02/2008, 16h00
  3. Réponses: 4
    Dernier message: 12/04/2007, 16h04
  4. Sous formulaire dépendant d'une liste déroulante : plantage
    Par Goldenduck4000 dans le forum Access
    Réponses: 3
    Dernier message: 23/05/2006, 09h06
  5. Réponses: 32
    Dernier message: 22/09/2005, 10h40

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