[ACCESS] Liste de choix

Bonjour,
Je suis un vrai débutant sous access et voici mon problème...

J'ai fait une table JOUEURS avec comme attributs :
1- le nom des joueurs
2- état (fixé à 0 par défaut)

Dans une liste de choix, je choisis un nom de joueurs, provenant de ma table JOUEURS...
J'aimerai que, après avoir sélectionné mon nom de joueur, l'état qui lui correspond passe à 1 automatiquement.

Merci pour votre aide
Configuration: Windows XP
Internet Explorer 7.0

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. J'essaie de trouver qqc, mais pas facile...

    Je tente avec "AprèsMAJ", et une macro qui utilise ItemSelected, mais y'a pas moyen !

    Help me SVP
    1. Modérateur
      Salut,

      en fait, il faut récupérer le nom du joueur :
      ma_liste.value
      créer une requête SQL qui va mettre à jour :
      UPDATE JOUEURS SET Etat = 1 WHERE nom_joueur=ma_liste.value
      
      Et c'est à mettre dans le code 'sur changement'.

      Ca devrait être tout !
      1. Merci, mais je suis un simple débutant...

        Pourriez-vous, SVP, me décrire un peu + la chose !

        Comment récupérer le nom du joueur ?
        Comment créer cette requête ?

        Désolé, mais j'essaie et je n'arrive pas...
        1. Modérateur
          Et bien, dans les propriétés de la zone de liste, tu choisis l'évènement 'sur changement', tu récupères le nom renvoyé par ta liste et tu le mets en paramètre d'une requête qui va mettre à jour ta table :
          DoCmd.runsql (UPDATE JOUEURS SET Etat = 1 WHERE nom_joueur=ma_liste.value)
          1. Merci beaucoup pour votre aide.
            Je touche au but grâce à vous : je persiste...

            J'ai mis donc dans le code, sur l'évènement 'AprèsMAJ' de ma liste nommée 'LISTE_JOUEURS' :

            " Private Sub LISTE_JOUEUR_AfterUpdate()

            DoCmd.runsql (UPDATE JOUEURS SET Etat = 1 WHERE nom_joueur=LISTE_JOUEUR.value)

            End Sub"

            Hélas, lors de la sélection d'un joueur dans ma liste, Access me donne 'Erreur de compilation : erreur de syntaxe'...

            A l'aide, SVP !?!
            1. Modérateur
              Oui, c'est normal, il faut lui dire de comparer avec le contenu de liste_joueur et non avec 'liste_joueur' :
              Dim Str as String
              Str = "UPDATE JOUEURS SET Etat = 1 "
              Str = Str + "WHERE nom_joueur = '" & LISTE_JOUEUR.value & "';"
              DoCmd.runsql Str
            2. Merci encore !

              Je viens de rentrer votre code...
              Plus d'erreur de compilation mais tjrs un souci !

              Quand je sélectionne un nom de joueur (Toto par exemple), une nouvelle fenêtre s'affiche (titre 'Entrer une valeur de paramètre' avec 'nom_joueur')...
              J'entre le nom 'toto' puis OK. Apparaît une alerte me disant que "Vous allez mettre à jour 0 lignes [...]"... je clique sur OK, et je vais voir dans la table 'JOUEURS'

              L'état de 'Toto' est tjrs à 0... lol !
            3. Modérateur
              Dans la requête que je t'ai fournie, remplace nom_joueur par le nom de la colonne qui contient le nom des joueurs...
            4. Merci de vous donner du mal pour moi !

              J'ai bien fait ce que vous m'avez demandé : plus de fenêtre s'affiche, seul le message "vous allez mettre à jour 0 lignes [...]" apparaît.
              Par contre, quand je sélectionne le nom 'toto', l'état de Toto ne passe pas à 1.

              Rappel : table 'Joueurs', avec en colonne 1 'Nom' et en colonne 2 'Etat'
              Voici le code que j'ai mis :
              Private Sub LISTE_JOUEURA1_AfterUpdate()
              Dim Str As String
              Str = "UPDATE Joueurs SET Etat = 1 "
              Str = Str + "WHERE Nom = '" & LISTE_JOUEURA1.Value & "';"
              DoCmd.RunSQL Str
              End Sub


              PS : si vous voulez que je vous envoie par mail mon doc Accees, je n'y vois aucun inconvénient...
            5. Modérateur
              Le seul truc qui pourrait clocher, c'est que LISTE_JOUEURA1 ne renvoie pas le nom du joueur mais un identifiant...

              Pour en être sûr, rajoute la ligne msgbox Str avant le runsql, ACCESS affichera le contenu de str, et on verra ce qui ne va pas...