Listes déroulantes [cascade + choix multiple]

Fermé
Scrapleton Messages postés 4 Date d'inscription mardi 30 septembre 2014 Statut Membre Dernière intervention 2 octobre 2014 - 30 sept. 2014 à 22:06
Scrapleton Messages postés 4 Date d'inscription mardi 30 septembre 2014 Statut Membre Dernière intervention 2 octobre 2014 - 2 oct. 2014 à 10:36
Bonjour,

Je vous explique ce que je veux réaliser :

Une base de donnée contenant des activités.
Une activité est caractérisée par une ou plusieurs compétences (A, B, C, etc ... ) et par une ou plusieurs sous-compétences (A1, B1, B2, etc ... ).

Les compétences et les sous-compétences sont enregistrées dans des tables qui servent de sources qui alimentent des listes de choix pour les activités (l'option "autoriser plusieurs valeurs" est à 'oui').

Mon problème se trouve dans le formulaire qui me servira à "créer" les activités.

Je souhaiterais que l'utilisateur sélectionne une ou plusieurs compétences dans une première liste déroulante. (Ex : A et C)

La liste déroulante contenant les sous-compétences serait alors mise à jours et ne contiendrait que les sous-compétences correspondantes aux compétences choisies (Ex : A1, A2, C1, C2).


Ce que j'ai déjà mis en place :

Une 1ere liste déroulante (listeComp) créée à partir du champ 'competence' autorisant le choix multiple.
Source :
SELECT [Competences].[ID], [Competences].[nom] FROM Competences ORDER BY [ID];

(1 colonne liée : l'ID)

Une 2eme liste déroulante créée à partir du champ 'sous-compétence' autorisant le choix multiple.
Source :
SELECT [SousCompetences].[ID], [SousCompetences].[IDCompetence], [SousCompetences].[nom], [Competences].[ID] FROM Competences INNER JOIN SousCompetences ON [Competences].[ID] = [SousCompetences].[IDCompetence] WHERE ((([SousCompetences].[IDCompetence])=[Formulaires]![Activite]![listeComp]));


Ce que j'obtiens :

Si je ne sélectionne AUCUNE compétence : la liste des sous-compétences est vide. (parfait ...)

Si je sélectionne UNE compétence : la liste de sous-compétences contient les bonnes sous-compétences. (encore parfait ...)

Si je sélectionne PLUSIEURS compétences : la liste des sous-compétences est vide ... (Oups ...)

Mes pistes ... :

- Le problème ne provient PAS de la mise à jour de la 2eme liste.
- Le problème provient surement de la requête SQL de la 2eme liste.
-> J'ai éssayé d'utiliser un IN(...) étant donné que la liste contient plusieurs valeurs, mais sans résultat (peut-être dû à une erreur de ma part)
- Le problème provient aussi peut-être de la manière dont Access enregistre les données multiples dans les listes déroulantes.

J'espere avoir été assez clair et complet, n'hésitez pas à me demander des précisions.

Merci d'avance !

3 réponses

Bonjour,
Difficile à comprendre, ton montage.
"Si je sélectionne PLUSIEURS compétences : la liste des sous-compétences est vide ... (Oups ...) "
Comment est conçu ton formulaire pour pouvoir sélectionner plusieurs compétences en même temps si le 1er contrôle est réservé pour la compétence N°1?
Deuxièmement, si tu peux sélectionner plusieurs compétences en 1, es-tu sûr(e) que les compétences de 2ème rang ne sont pas en opposition avec les 1ères? Autrement dit, es-tu sûr qu'il n'y a pas conflit entre les compétences de 1er rang qui entraine des impossibilités en 2ème rang.
A plus tard
0
Scrapleton Messages postés 4 Date d'inscription mardi 30 septembre 2014 Statut Membre Dernière intervention 2 octobre 2014
30 sept. 2014 à 22:44
Salut, merci pour ta réponse

- Access propose des listes déroulantes agrémentées de cases à cocher.
Il m'est donc possible de sélectionner plusieurs compétences via une seule liste déroulante.

- J'ai aussi pensé à un problème de conflit, j'ai donc effectué un test en retirant toutes les contraintes (clés) qui auraient pu en entrainer, ce qui n'a rien changé.

Je pense que le problème peut venir de l'utilisation du '=' dans la 2eme requete SQL alors que la liste contient plusieurs valeurs ... mais je ne trouve pas de solution.

Si une capture d'écran de mon formulaire peut t'aider, n'hésite pas à demander !

Merci bien
0
Re....
"Access propose des listes déroulantes agrémentées de cases à cocher. ", Je ne connais pas cette fonctionnalité si elle est proposée par le système, j'ai beaucoup travaillé sur A_2000, et je suis actuellement sur A_2007/2010 mais je n'en connais pas toutes les facilités. J'en découvre encore. Cela, sauf si tu as construit ta liste déroulante toi-même, avec les cases à cocher.
Cela dit et selon ta remarque, il s'agit vraisemblablement d'un conflit, ou d'une incompatibilité entre les choix. A ce moment là, il faut préférer "like" à "=".
Voir ma remarque: http://www.commentcamarche.net/forum/affich-30828580-bouton-qui-ouvre-un-etat-avec-une-condition-where
Bonne suite
0
PS: Les vues d'écran, d'abord on n'y voit rien, et si je n'ai pas la version adéquate, ça ne servira à rien. Merci tout de même.
Bonne suite
0
Scrapleton Messages postés 4 Date d'inscription mardi 30 septembre 2014 Statut Membre Dernière intervention 2 octobre 2014
1 oct. 2014 à 10:21
Re ...

https://support.microsoft.com/fr-fr/office/cr%c3%a9er-ou-supprimer-un-champ-%c3%a0-plusieurs-valeurs-7c2fd644-3771-48e4-b6dc-6de9bebbec31?ocmsassetid=ha010031117&correlationid=6516ab8c-8dd3-4d22-be6a-1fe848ac731e&ui=fr-fr&rs=fr-fr&ad=fr

L'opérateur LIKE sert à effectuer des recherches dans des chaînes de caractères.
Or, ce que je veux faire, c'est effectuer une recherche dans un champ comprenant plusieurs valeurs de type numérique ...
0
Bonjour,
"L'opérateur LIKE sert à effectuer des recherches dans des chaînes de caractères. ". C'est parfaitement exact, et peut être ma réponse n'était pas adéquate. Changeons le fusil d'épaule!
Dans ce cas, et ne connaissant la fonctionnalité, nouvelle pour moi, je vois 2 possibilités. Soit jongler avec les "and" et les "or", autrement dit les "inter" et "union" de l'algèbre de Boole; il faut avoir l'esprit clair sur ces questions. Ou bien ne tenir compte que des compétences de 2ème rang puisque celles-ci découlent des compétences de 1er rang, ce qui peutt être assez avantageux.
Bonne suite, et merci pour la leçon à propos des listes avec les cases à cocher.
(Mais attention à bien tenir compte des utilisations. Il est bien préciser dans l'exemple cité qu'il s'agit de sélectionner qqch comme les membres d'une équipe; je ne suis pas sûr que sélectionner des propriétés en cascade soit aussi facile, surtout s'il faut en tirer des individus en retour. Il est toujours recommandé de tester des choses nouvelles et d'essayer des utilisations qui n'ont pas été prévues. Mais il ne faut s'étonner si on se plante.)
0
Scrapleton Messages postés 4 Date d'inscription mardi 30 septembre 2014 Statut Membre Dernière intervention 2 octobre 2014
2 oct. 2014 à 10:36
Salut,
je me suis pas mal documenté sur le sujet sur d'autres sites spécialisés (developpez.net notamment) et il en ressort que les listes déroulantes à choix multiples sont assez peu conseillées.
Je repasse donc par un modèle traditionnel pour mes liaisons many-to-many (avec une table supplémentaire contenant les index ...) mes requêtes contiendront plus de JOIN, mais auront un résultat plus fiable !

J'espérais pouvoir profiter de la nouvelle composante de Access et éviter de passer par du code en VBA (quel ennui pour un développeur Java ^^), mais ça ne parait pas encore au point ... Peut-être pour 2015 ? :D

Merci pour tes réponses en tout cas !
0