Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

requête/formulaire à choix multiple

30 réponses
Avatar
zzzz
Bonjour,
j'ai une table avec les colonnes suivantes : ann=E9es, d=E9partement,
secteur, sexe, pr=E9sent=E9s et admis.
Le but est de calculer le taux (admis/pr=E9sent=E9s), mais lequel ? ce
sera celui que choisira l'utilisateur : le taux par ann=E9e et par genre
par exemple, ou par ann=E9e, d=E9partement et secteur, etc...
Je sais faire un formulaire avec liste d=E9roulante o=F9 il choisira sa ou
ses variables, mais je ne sais pas comment faire pour =E9liminer les
colonnes non demand=E9es.
Par exemple si je veux des taux par ann=E9e et par sexe, je ne sais pas
comment =E9liminer les autres colonnes de ma requ=EAte/formulaire .
Je ne sais pas si j'ai =E9t=E9 clair ?

10 réponses

1 2 3
Avatar
db
Le 25/04/2013 11:23, zzzz a écrit :
Non, je ne vois pas du tout comment faire avec les cases d'option
Voici le but recherché :
Par exemple, si je choisis l'année 2006 et le département 75, le
résultat doit être celui de la requete :
select An, depart, sum(admis)/sum(présents) FROM MaTable GROUP BY An,
depart HAVING An ="2006" AND depart="75"

Voici ce que je sais faire
Dans mon formulaire, j'ai des listes déroulantes correspondant à :
Année, département, secteur, etc...et un sous formulaire qui m'affiche
le résultat de ce que j'ai sélectionné dans mes listes déroulantes.

Mais l'affichage dans le sous formulaire ne se fait que si je clique
sur toutes les listes déroulantes.
le seul code que j'ai pour l'instant c'est celui de l'évènement après
MAJ de mes zones de liste. Le nom du SF étant SF_TauxParQuest
Private Sub Modifiable8_AfterUpdate()
Me.SF_TauxParQuest.Requery
End Sub




Bonsoir,

Quelles sont les données affichées dans le sous-formulaire
SF_TauxParQuest ? Est-ce que ce sont toujours les mêmes (an, depart,
sum(admis)/sum(présents) ), ou est-ce qu'elles doivent dépendre des
données sélectionnées dans le formulaire principal - même si les valeurs
de ces données changent, évidemment ?

db
Avatar
Jac
"zzzz" a écrit :

Mais le problème c'est que je voudrais cliquer sur 2 ou 3 cases, pas
sur une seule... et même si j'arrive à cliquer sur 2 ou 3 cases, il
faudra alors que je crée les requêtes correspondantes, ça me ferait
beaucoup de de requêtes...
Donc, pour l'instant c'est l'impasse...

=> Les cases d'options, c'est une seule à la fois, chaque clic sur une
case désactive l' (les) autre(s) et ça, Access le gère très bien tout
seul ;-)))
Si tu veux faire des choix multiples, tu dois utiliser des cases à
cocher.
Effectivement, tu auras à combiner les requêtes "TauxParAn"
"TauxParDepart" "Etc. "
Je pense que tu peux quand même faire mieux qu'écrire 15 requêtes genre
"TauxParAnEtPar Sexe", "TauxParAnEtParSecteurEtParDepart", ...

--
Avatar
Gloops
Jac a écrit, le 25/04/2013 00:45 :
"Gloops" a écrit :

pour les sexes comme il y a deux valeurs ça serait possible aussi ma is
ça risque d'être plus élégant de proposer des boutons radio



Le bouton radio, c'est l'un ou l'autre.
Etant donné le vote de la récente loi, on aurait peut-être inté rêt à
resortir les bonnes vieilles cases à cocher (et ça dit bien ce que ça
veut dire).




J'imagine que c'est une pique pour rigoler ?
Avatar
Gloops
Jac a écrit, le 25/04/2013 11:31 :
"zzzz" a écrit :

[...]



Voici où j'en suis pour l'instant...



As-tu essayé l'assistant qui est très bien pour l'utilisation des
diverses sortes de cases ?




Je ne me rappelle plus ce que fait l'assistant.
Il automatise le traitement lié aux contrôles, c'est bien ça ? Jac va
nous expliquer ça bien :)

En tout cas, si je ne m'abuse il ne faut pas confondre, il n'y a pas
d'assistant qui génère la requête SQL en fonction des critères sé lectionnés.

Pour ça, il faudra créer un bouton, où on écrira le code en fonct ion de
la sélection effectuée.

D'abord, il faut se mettre d'accord sur comment indiquer qu'un critère
doit être actif ou pas

Si il s'agit d'une liste, elle peut contenir Null, ce qui signifie
qu'aucun élément n'est sélectionné. Concrètement, pour sélect ionner un
élément on clique dessus, mais pour sélectionner Null, ce qui revie nt à
tout désactiver dans la liste, il faut créer un bouton à cet effet juste
au-dessus de la liste (ou juste en dessous, ça c'est une question
d'esthétique).

Pour une zone de texte c'est Null tant qu'on ne met rien dedans, donc
pas de problème.

Pour un groupe d'options (donc avec les boutons radio), pareil que pour
la liste, pour tout désactiver il faut créer un bouton à cet effet. Ou
si on préfère on peut bricoler quelque chose avec le double-clic, mai s
ça ne signifie pas que ce sera plus évident pour un utilisateur non a verti.

Pour une case à cocher, il faut réviser la notion de triple état : oui,
non, désactivé. Il doit y avoir un topo là-dessus dans la doc.

Une fois que tout ça a été passé en revue, le bouton qui génè re la
requête ne traite que les contrôles qui ne contiennent pas Null.

Et entre deux, ne pas oublier d'ajouter les AND.

Est-ce que ça devient plus clair ?




Pour ce qui est de l'emplacement du bouton, attention c'est normalisé,
il y a des pages de doc sur la question. En règle générale, on trou ve le
bouton OK en haut à droite du formulaire, et le bouton Annuler juste en
dessous. En fonction du rôle du formulaire, il se pourrait bien que ce
soit le bouton OK qui génère la requête.

Il n'y a pas de difficulté technique pour mettre le bouton à un endro it
donné, et l'intérêt est que l'utilisateur trouve toujours les bouto ns à
un endroit habituel, ce qui fait que c'est plus facile à localiser.

Ne pas oublier aussi de désigner un bouton comme bouton par défaut, c ar
si le pilote de souris gère ça il sera sélectionné automatiquemen t.
Encore que si on a l'obligation de commencer par sélectionner des
critères, ce point perd de son caractère judicieux.
Avatar
Jac
"Gloops" a écrit :

Jac a écrit, le 25/04/2013 11:31 :
"zzzz" a écrit :

[...]



Voici où j'en suis pour l'instant...



As-tu essayé l'assistant qui est très bien pour l'utilisation des
diverses sortes de cases ?




Je ne me rappelle plus ce que fait l'assistant.
Il automatise le traitement lié aux contrôles, c'est bien ça ? Jac va
nous expliquer ça bien :)

=> Non, c'est juste pour les créer.
http://cjoint.com/?3DAaOAsowsL

En tout cas, si je ne m'abuse il ne faut pas confondre, il n'y a pas
d'assistant qui génère la requête SQL en fonction des critères
sélectionnés.

=> Tu ne t'abuses pas.

Pour ça, il faudra créer un bouton, où on écrira le code en fonction de
la sélection effectuée.

D'abord, il faut se mettre d'accord sur comment indiquer qu'un critère
doit être actif ou pas

Si il s'agit d'une liste, elle peut contenir Null, ce qui signifie
qu'aucun élément n'est sélectionné. Concrètement, pour sélectionner un
élément on clique dessus, mais pour sélectionner Null, ce qui revient à
tout désactiver dans la liste, il faut créer un bouton à cet effet juste
au-dessus de la liste (ou juste en dessous, ça c'est une question
d'esthétique).

Pour une zone de texte c'est Null tant qu'on ne met rien dedans, donc
pas de problème.

Pour un groupe d'options (donc avec les boutons radio), pareil que pour
la liste, pour tout désactiver il faut créer un bouton à cet effet. Ou
si on préfère on peut bricoler quelque chose avec le double-clic, mais
ça ne signifie pas que ce sera plus évident pour un utilisateur non
averti.

Pour une case à cocher, il faut réviser la notion de triple état : oui,
non, désactivé. Il doit y avoir un topo là-dessus dans la doc.

Une fois que tout ça a été passé en revue, le bouton qui génère la
requête ne traite que les contrôles qui ne contiennent pas Null.

Et entre deux, ne pas oublier d'ajouter les AND.

Est-ce que ça devient plus clair ?




Pour ce qui est de l'emplacement du bouton, attention c'est normalisé,
il y a des pages de doc sur la question. En règle générale, on trouve le
bouton OK en haut à droite du formulaire, et le bouton Annuler juste en
dessous. En fonction du rôle du formulaire, il se pourrait bien que ce
soit le bouton OK qui génère la requête.

=> Y'a aussi une histoire de focus.

Il n'y a pas de difficulté technique pour mettre le bouton à un endroit
donné, et l'intérêt est que l'utilisateur trouve toujours les boutons à
un endroit habituel, ce qui fait que c'est plus facile à localiser.

Ne pas oublier aussi de désigner un bouton comme bouton par défaut, car
si le pilote de souris gère ça il sera sélectionné automatiquement.
Encore que si on a l'obligation de commencer par sélectionner des
critères, ce point perd de son caractère judicieux.
Avatar
Jac
"Gloops" a écrit :

J'imagine que c'est une pique pour rigoler ?



Vi.

--
Avatar
zzzz
On 25 avr, 18:03, db wrote:
Le 25/04/2013 11:23, zzzz a écrit :



> Non, je ne vois pas du tout comment faire avec les cases d'option
> Voici le but recherché :
> Par exemple, si je choisis l'année 2006 et le département 75, le
> résultat doit être celui de la requete :
> select An, depart, sum(admis)/sum(présents) FROM MaTable GROUP BY An,
> depart HAVING An ="2006" AND depart="75"

> Voici ce que je sais faire
> Dans mon formulaire, j'ai des listes déroulantes correspondant à :
> Année, département, secteur, etc...et un sous formulaire qui m'affi che
> le résultat de ce que j'ai sélectionné dans mes listes déroulan tes.

> Mais l'affichage dans le sous formulaire ne se fait que si je clique
> sur toutes les listes déroulantes.
> le seul code que j'ai pour l'instant c'est celui de l'évènement apr ès
> MAJ de mes zones de liste. Le nom du SF étant SF_TauxParQuest
> Private Sub Modifiable8_AfterUpdate()
> Me.SF_TauxParQuest.Requery
> End Sub

Bonsoir,

Quelles sont les données affichées dans le sous-formulaire
SF_TauxParQuest ? Est-ce que ce sont toujours les mêmes (an, depart,
sum(admis)/sum(présents) ), ou est-ce qu'elles doivent dépendre des
données sélectionnées dans le formulaire principal - même si les valeurs
de ces données changent, évidemment ?

db



Je reconnais que ce n'est pas facile d'expliquer. Je reprends depuis
le début en essayant d'être plus clair.
j'ai une table avec les colonnes suivantes : années, département,
secteur, sexe, présentés et admis.
Le but est de calculer le taux (admis/présentés).

Certains utilisateurs n'auront besoin que du taux pour une année
donnée ( ou 2 ou 3) et pour 1 département donnée (ou 2 ou 3). S'ils
veulent par exemple le taux des années 2010 à 2012 pour les
départements 91 et 92, le résultat devra correspondre au résultat de
la requete (Je ne dis pas qu'il faut utiliser cette requête, c'est
juste pour expliquer ce que je recherche) :
Select An, Depart, Sum(admis)/Sum(présents) FROM MaTable
GROUP BY An, Depart
HAVING An Between "2010" And "2011" AND (Depart = "91" ou Depart ="92"


D'autres n'auront besoin que du taux des filles pour une ou plusieurs
années et pour un ou plusieurs département, etc...


Comment faire pour permettre à l'utilisateur de choisir les années et/
ou les département et/ou le secteur et/ou le sexe qu'il souhaite ?
Avatar
db
Le 26/04/2013 10:12, zzzz a écrit :

D'autres n'auront besoin que du taux des filles pour une ou plusieurs
années et pour un ou plusieurs département, etc...


Comment faire pour permettre à l'utilisateur de choisir les années et/
ou les département et/ou le secteur et/ou le sexe qu'il souhaite ?




En fait, il faut distinguer deux groupes de choix :
- le premier indiquera quel(s) champ(s) servira (serviront) au
regroupement (pour le select et le GROUP BY) pour le calcul du taux :
les quatre noms de champs avec une case à cocher à côté de chaque nom
- le second indiquera, pour chaque champ, les valeurs (éventuelles) à
sélectionner dans le WHERE (et non HAVING) : pour chaque champ, la liste
des valeurs possibles, permettant une multi-sélection.

La génération de la requête SQL se fera au clic sur un bouton et la
requête servira comme source du sous-formulaire.

Le sous-formulaire sera prévu pour afficher les 4 champs et le taux.

Bon, évidemment, c'est plus facile à dire qu'à faire, mais ça n'est pas
infaisable...

db
Avatar
Gloops
Jac a écrit, le 26/04/2013 00:48 :
=> Y'a aussi une histoire de focus.



Oui, quand je parle plus bas de bouton qui est sélectionné
automatiquement si le pilote de souris gère cela, c'est bien du focus,
que je voulais parler.
Avatar
Gloops
Gloops a écrit, le 26/04/2013 00:17 :
Est-ce que ça devient plus clair ?



Je me permets d'insister un petit coup sur l'importance de cette question ;)
1 2 3