{Access} liste de choix multiple

marceuf Messages postés 30 Statut Membre -  
marceuf Messages postés 30 Statut Membre -
Bonjour,

Dans une liste de choix à sélection multiple basée sur une table (500 enr) je cherche à mettre à jour un champ ‘SELECTION’ en ‘OUI’ pour les enregistrements sélectionné.

De telle sorte qu’a tout moment je puisse vérifier ce qui a été déjà sélectionné ou non.

Je pense que je pourrais arriver à cela en utilisant une requête de non correspondance sur les deux tables (la table de la liste et la table dans laquelle s’enregistre les données) mais, je trouve cela un peu lourd d’autant que le champ où se mettent les sélections est un champ type ‘memo’, ce qui m’obligerait, avant, de faire une requête pour extraire les données et les reformater pour pouvoir les comparer …..

Bref, comment faire cela simplement en mettant à jour le champ sélection au fur et à mesure des sélections?? Je ne trouve pas.

Merci d’avance pour vos idées.

Marc F
Configuration: Windows XP
Safari 532.0

14 réponses

  1. moiced59 Messages postés 1161 Statut Membre 60
     
    bonjour

    tu veux que quand tu selectionne un enregistrement de ta liste de choix le champ selection devienne OUI c ca?
    0
  2. marceuf Messages postés 30 Statut Membre
     
    tout simplement ça, mais je coince....
    0
  3. moiced59 Messages postés 1161 Statut Membre 60
     
    re

    alors il faut que ta liste de chois soit basé sur ta clé primaire (champ_premaire pr requete)
    quand tu la creer access a du te demandé quel champ tu voulais enrtegistre pr t en reservir

    ensuite il te faut creeer une requete de mise a jour:

    update ta_table set validation=true where ton_champ_primaire = forms!nom_du_formulaire!nom_de_ta_liste_de_choix
    exemple:
    update personage set validation = true where n° = forms!recherche!liste2

    ensuite sur clique de ta liste de choix tu creer une procedure evenementielle:

    docmd.openquery "nom-requete"
    me.refresh

    et voila le tour est joué si besoin hesite pas si les message de mise ajour t embete dis moi je te dirais comment les enlever
    0
  4. moiced59 Messages postés 1161 Statut Membre 60
     
    il faudrais que tu mette la procedure sur double clic
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. marceuf Messages postés 30 Statut Membre
     
    ok, je vais essayé comme tu dis.

    a/ procédure sur double clic, pourquoi??

    b/ dans ce cas je vais faire un bouton qui une fois sélectionné enregistre les données dans ma table, donc, j'ajouterai la requête que tu dis sur cette procédure.

    merci, te tiens au courant dès que j'ai eu le temps de faire ça.
    0
  7. moiced59 Messages postés 1161 Statut Membre 60
     
    sur double clic car si tu fais defilé ta liste de choix avec la fleche du bas cela executera le code car la fleche du bas corrspond a un clic voila pourquoicdouble clic mais c vrai que tu peu creer un bouton!!!!

    bon courage j'attend de t new
    0
  8. marceuf Messages postés 30 Statut Membre
     
    pas facile!!
    je bloque pour deux raisons:

    1/ le champs est de type caractère (pas moyen de convertir en numérique avec cvar ??)
    2/ c'est une sélection multiple donc j'ai une réponse du style: "1""5""16""23""40""50".

    Il faudrait faire une boucle pour extraire chaque nombre et exécuter la requête chaque fois.

    ou alors, j'aimerais mieux ne pas convertir et utiliser un autre champs que ma clé primaire
    (mais là tu avais commencé par me dire qu'il m'en fallait une)

    peut-tu m'aider pour cette boucle ?
    0
  9. moiced59 Messages postés 1161 Statut Membre 60
     
    oula je comprend pas ce que tu me dis!!!!!!!!!!!!!!

    pourquoi une boucle!!! pas besoin puisque tu execute la requete a chaque changement une boucle servirai si tu devais parcourir t enregistrement quel sont t champ exactement et kel champ est egal au quel !!!
    0
  10. marceuf Messages postés 30 Statut Membre
     
    c'est une sélection multiple, c'est là le problème

    donc dans ma liste de choix, je sélectionne en glissant la souris ou en cliquant sur plusieurs choix. ce qui me donne une valeur contenu dans un champ mémo du style "1""5""16""23""40""50".
    et j'aimerai que pour chacun de ces enregistrement dans ma table pour la liste de choix le champ sélection se mette sur OUI.

    pour une seule valeur de type numérique ta procédure fonctionne, je l'ai testée.
    mais, dans les conditions que je t'indique il faudrait à mon avis faire une boucle pour extraire chaque valeur,
    j'essaye mais m'y perd un peu.
    merci de ton aide
    0
  11. marceuf Messages postés 30 Statut Membre
     
    ok, on ne cherche plus, j'ai trouvé............

    merci quand même
    j'ai fais une boucle for each ...next .....
    et j'ai changé le champ et l'emplacement de " docmd.openquery" qui n'était pas intégré dans la boucle

    maintenant ça marche

    a+
    merci
    0
  12. moiced59 Messages postés 1161 Statut Membre 60
     
    peux tu collé ton code

    merci
    0
  13. marceuf Messages postés 30 Statut Membre
     
    Private Sub enregistrer_Click()
    Dim varelt As Variant
    Dim str As String
    Dim stDocName As String
    Dim sélection

    If Me.cours.ItemsSelected.Count = 0 Then
    MsgBox "aucun cours n'a été sélectionné"
    Else

    For Each varelt In Me.cours.ItemsSelected
    str = str & """" & Me.cours.ItemData(varelt) & """'"
    Next varelt

    str = "" & Left(str, Len(str) - 1) & ""
    Me!cours = str
    End If

    str = ""
    If Me.EAC.ItemsSelected.Count = 0 Then
    MsgBox "aucune compétences n'a été sélectionnées"
    Else

    For Each varelt In Me.EAC.ItemsSelected
    str = str & """" & Me.EAC.ItemData(varelt) & """'"

    EAC = Me.EAC.ItemData(varelt)
    MsgBox EAC
    stDocName = "EAC-compétences"
    DoCmd.OpenQuery stDocName, acNormal, acEdit

    Next varelt

    str = "" & Left(str, Len(str) - 1) & ""
    Me!EAC = str
    End If

    End Sub

    PS: les msgbox ne sont là que pour vérifier les valeurs (je les supprime plus tard)
    0
  14. marceuf Messages postés 30 Statut Membre
     
    bonjour, je continue ce post qui était résolu car le sujet est tjs le même.
    grâce a votre aide j'ai bien avancé dans mon programme.
    j'ai encore un petit souci avec mes listes de choix et ne trouve pas:

    Comment faire dans un formulaire, lorsqu’ avec un bouton ‘valider’ on crée un nouvel enregistrement, les champs des liste de choix sélectionnées précédemment soient désélectionné ?
    En d’autres termes, comment désélectionner (contraste noir) automatiquement les champs sélectionnés dans une liste de choix multiple.

    merci d'avance
    0
  15. marceuf Messages postés 30 Statut Membre
     
    personne pour me venir en aide sur mon dernier post??
    0