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 :

Comment utiliser l'élément précédent de celui qui est sélectionné dans un liste?


Sujet :

Access

  1. #1
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut Comment utiliser l'élément précédent de celui qui est sélectionné dans un liste?
    Bonjour,

    J'ai une liste avec plusieurs noms dans le formulaire Ajout.
    Dans le formulaire Ajout, j'ai la possibilité de mettre le nom caché ou pas (champ "Caché" = Vrai ou Faux).

    Dans le formlaire Appel, la liste des noms qui ne sont pas caché apparait.
    Cette liste est ordonnée par un champ "Ordre".

    Dans le formulaire Ajout, je dois pouvoir changer l'ordre d'affichage des noms pas cachés avec une flèche "Up" et "Down".

    Voici le code que j'ai fait :
    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
     
        Set monJeu = maBase.OpenRecordset("refInfoDC", dbOpenDynaset)
        strCritere = "infoDC = """ & lstAffichees & """"
        monJeu.FindFirst strCritere
     
        If (monJeu.NoMatch) Then
           Call MsgBox("Erreur, le nom n'existe plus dans la table", vbCritical, "Erreur")
        Else
     
            Dim noOrdre As String
     
            Do
            noOrdre = monJeu!Ordre
     
            monJeu.Edit
            If noOrdre <= 10 Then
            monJeu!Ordre = "0" & noOrdre - 1
            Else
            monJeu!Ordre = noOrdre - 1
            End If
            monJeu.Update
     
            lstAffichees.Selected(lstAffichees.ListIndex - 1) = True
            strCritere = "infoDC = """ & lstAffichees & """"
            monJeu.FindFirst strCritere
     
            monJeu.Edit
            monJeu!Ordre = noOrdre
            monJeu.Update
     
            Loop While monJeu!cache = True
            lstAffichees.Requery
        End If
    Cependant ca ne fonctionne pas car la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    lstAffichees.Selected(lstAffichees.ListIndex - 1) = True
    strCritere = "infoDC = """ & lstAffichees & """"
     monJeu.FindFirst strCritere
    sélectionne le nom précédent dans la liste mais quand je fais monJeu.FindFirst du strCritere le critère est le meme que le premier...
    Pourquoi?

  2. #2
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    et comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strCritere = "infoDC = " & "'" & lstAffichees & "'"
    ?
    Je ne comprends rien à Access...Mais je me soigne.
    Moteur de recherche
    DAO

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Pourquoi lstAffichees.ListIndex - 1 ?
    Cela désigne l'élément précédent à priori
    ListIndex devrait suffire

  4. #4
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strCritere = "infoDC = '"  & lstAffichees.ItemData(lstAffichees.ListIndex - 1) & "'"
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  5. #5
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut
    Bon je pense bien que je n'ai pas été clair.
    Je me réexplique.

    J'ai changé le code pour que ca soit plus simple à comprendre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    'Commande SQL pour décrémenter de 1 l'ordre de la personne sélectionnée (Alain) dans la liste
    DoCmd.RunSQL ("UPDATE refInfoDC SET Ordre = Ordre -1 WHERE nomPersonne = """ & lstAffichees & """ ") 'lstAffichees = Alain, tout est ok jusque là quand je regarde dans la BD le numéro d'ordre d'Alain vient de baisser de 1
    'Je sélectionne la personne précédente dans la liste
    lstAffichees.Selected(lstAffichees.ListIndex - 1) = True 'Quand je regarde le formulaire l'élément sélectionné est Bruno 
    'Commande SQL pour incrémenter de 1 l'ordre de la personne sélectionnée (Bruno)
    DoCmd.RunSQL ("UPDATE refInfoDC SET Ordre = Ordre + 1 WHERE nomPersonne = """ & lstAffichees & """ ") 'lstAffichees = Alain au lieu de Bruno! Pourquoi??? je viens de sélectionner Bruno dans la liste?!?
     
    lstAffichees.Requery
    J'espère que c'est plus clair.

    Dsl, j'ai de la misère...

  6. #6
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut
    J'ai trouvé une solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DoCmd.RunSQL ("UPDATE refInfoDC SET Ordre = Ordre -1 WHERE nomPersonne = """ & lstAffichees.ItemData(lstAffichees.ListIndex) & """ ")
    DoCmd.RunSQL ("UPDATE refInfoDC SET Ordre = Ordre +1 WHERE nomPersonne = """ & lstAffichees.ItemData(lstAffichees.ListIndex - 1) & """ ")
    lstAffichees.Requery
    Avec la méthode ItemData et en lui passant l'index en paramètre tu peux aller chercher l'élément précédent dans une liste.

    Et ca fonctionne!

    Merci de vous être creusé la tête pour moi!

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

Discussions similaires

  1. Comment faire un lien vers un spryaccordeon qui est inséré dans un spryonglet
    Par Manisero dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 08/01/2011, 17h39
  2. Réponses: 9
    Dernier message: 08/11/2010, 17h12
  3. Réponses: 1
    Dernier message: 11/09/2006, 11h21
  4. Réponses: 4
    Dernier message: 12/06/2006, 10h09

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