OVH Cloud OVH Cloud

Sélection de critères par le biais d'un menu déroulant

2 réponses
Avatar
Kent
Bonjour,

je me suis mal exprim=E9 et/ou je n'ai pas tout dit dans mon=20
pr=E9c=E9dent message (Ouvrir un formulaire pour le choix d'un=20
crit=E8re d'une requ=EAte).

- j'ai une table qui regroupe une liste de films [Films].
Cette table contient plusieurs champs (Nom, Description,
Support, Dur=E9e, Genre, etc.).

- le champ Support de la table [Films] est li=E9e =E0 une
autre table [Supports] qui contient la liste des supports
(DVD, VHS, etc.). Cela permet de modifier seulement la
table [Supports] pour que =E7a se r=E9percute dans la table
[Films].

- un formulaire permet d'entrer les diff=E9rents champs de
la table [Films] mais avec une certaine "mise en page".

- une requ=EAte qui fait office de filtre permet d'afficher
une liste restreinte des champs. P. ex., Nom, Description
et Support.

Ce que j'aimerai faire c'est ajouter un crit=E8re =E0 la=20
requ=EAte pour le champ Support en s=E9lectionnant un menu=20
d=E9roulant pouvant ainsi choisir entre DVD, VHS, etc.
Tout ce que j'ai pu faire c'est de mettre un param=E8tre=20
[entrer le support :] dans le crit=E8re du support.=20
L'inconv=E9nient est que l'on ne voit pas la liste des=20
supports existants, on peut mettre n'importe quoi...

Est-ce qu'il faut cr=E9er un formulaire avec un menu=20
d=E9roulant ?
Si oui, peut-on encore utiliser la table [Supports] ou=20
cela va poser des probl=E8mes de conflits vu qu'elle est=20
d=E9j=E0 utilis=E9e pour la table [Films] ?
Si non, comment faire (avec qqs d=E9tails) ?

Le but =E9tant, par la suite, de cr=E9er un =E9tat de cette=20
nouvelle requ=EAte pour pouvoir imprimer seulement les films=20
dont le support est "DVD". Cela =E9viterai ainsi de cr=E9er=20
une requ=EAte et un =E9tat pour chaque type de support.

Je suis =E9galement ouvert =E0 toutes autres=20
suggestions/modifications pour vu que j'arrive au bon=20
r=E9sultat...

Merci d'avance

PS : merci =E0 Raymond Access MVP, pour une r=E9ponse aussi
rapide sur mon premier message.

2 réponses

Avatar
Raymond [mvp]
Bonsoir.

J'étais en train de te préparer quelque chose.
je l'ai fait hier pour un client, il fallait rechercher les commandes
clients avec les critères suivants; date de commande entre deux dates, date
de livraison entre deux dates, un seul client . Deplus les 3 conditions
devaient être en And/Or. ce qui ressemble à ton problème. comme je te l'ai
dit, on place des champs et on construit un filtre qu'on applique à chaque
composition de critère. dans le cas de commandes il y a 4 champs date et 1
liste déroulante, j'aurais pu mettre 4 controles Dtpicker pour afficher le
calendrier.
à chaque événement afterupdate des 5 contrôles je construit le filtre et je
l'applique immédiatement ce qui a pour effet d'afficher le résultat à chaque
composition.
le filtre donne ceci:
If IsNull(date_debut) Then date_debut = Date
If IsNull(date_fin) Then date_fin = date_debut
If IsNull(date_liv_debut) Then date_liv_debut = date_debut
If IsNull(date_liv_fin) Then date_liv_fin = Date
Monfiltre = "(Générale.Date_Cde Between [Formulaires]![Form
Global]![date_debut] And [Formulaires]![Form Global]![date_fin])"
Monfiltre = Monfiltre & Ou1.Column(1) & "(Générale.Date_Livraison
Between [Formulaires]![Form Global]![date_liv_debut] And [Formulaires]![Form
Global]![date_liv_fin])"
Monfiltre = Monfiltre & Ou2.Column(1) & "(Générale.[N° client] [Formulaires]![Form Global]![client1])"
Me.Filter = Monfiltre
Me.FilterOn = True

J'espère ne pas avoir été trop compliqué.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Kent" a écrit dans le message de
news:75d401c3e832$eec9d780$
Bonjour,

je me suis mal exprimé et/ou je n'ai pas tout dit dans mon
précédent message (Ouvrir un formulaire pour le choix d'un
critère d'une requête).

- j'ai une table qui regroupe une liste de films [Films].
Cette table contient plusieurs champs (Nom, Description,
Support, Durée, Genre, etc.).

- le champ Support de la table [Films] est liée à une
autre table [Supports] qui contient la liste des supports
(DVD, VHS, etc.). Cela permet de modifier seulement la
table [Supports] pour que ça se répercute dans la table
[Films].

- un formulaire permet d'entrer les différents champs de
la table [Films] mais avec une certaine "mise en page".

- une requête qui fait office de filtre permet d'afficher
une liste restreinte des champs. P. ex., Nom, Description
et Support.

Ce que j'aimerai faire c'est ajouter un critère à la
requête pour le champ Support en sélectionnant un menu
déroulant pouvant ainsi choisir entre DVD, VHS, etc.
Tout ce que j'ai pu faire c'est de mettre un paramètre
[entrer le support :] dans le critère du support.
L'inconvénient est que l'on ne voit pas la liste des
supports existants, on peut mettre n'importe quoi...

Est-ce qu'il faut créer un formulaire avec un menu
déroulant ?
Si oui, peut-on encore utiliser la table [Supports] ou
cela va poser des problèmes de conflits vu qu'elle est
déjà utilisée pour la table [Films] ?
Si non, comment faire (avec qqs détails) ?

Le but étant, par la suite, de créer un état de cette
nouvelle requête pour pouvoir imprimer seulement les films
dont le support est "DVD". Cela éviterai ainsi de créer
une requête et un état pour chaque type de support.

Je suis également ouvert à toutes autres
suggestions/modifications pour vu que j'arrive au bon
résultat...

Merci d'avance

PS : merci à Raymond Access MVP, pour une réponse aussi
rapide sur mon premier message.
Avatar
Eric
Bonsoir Kent,

Il y a plusieurs possibilités pour ton traitement.
Je t'en donne une parmi tant d'autres.

Je suppose que tes tables FILMS & SUPPORTS sont composées
comme suit :
FILMS(Nom, Description,Support, Durée, Genre, )
SUPPORTS(Support,Type, etc.) où Support est un code mais
si c'est pas la cas(c a d le nom du support) ca marchera
aussi.

Alors crées un formulaire indépendant avec une liste
déroulante nommée par exemple ChoixSupport, le formulaire
sera nommé par simplification Form1

Ta liste déroulante tu la remplis avec l'assistant Liste
déroulante à partir de la table SUPPORTS en mettant le
champ Support (si c'est un code) ET le champ type, dans le
cas contraire ne mets que le champ support.


Sur la propriété Après Mise à Jour de la liste
ChoixSupport, génères une macro dont la seule action est
OuvrirRequête et tu précises le nom de la requête qui
filtre tes enregistrements.

Dans la requête qui filtre les enregistrements mets le
critère suivant sur le champ Support:
Formulaires!Form1!ChoixSupport

Ainsi tu lances le form1, il affiche ta liste déroulante,
tu choisis le support et ca t'affichera les
enregistrements correspondant au type de support choisi.

A+


-----Message d'origine-----
Bonjour,


Ce que j'aimerai faire c'est ajouter un critère à la
requête pour le champ Support en sélectionnant un menu
déroulant pouvant ainsi choisir entre DVD, VHS, etc.
Tout ce que j'ai pu faire c'est de mettre un paramètre
[entrer le support :] dans le critère du support.
L'inconvénient est que l'on ne voit pas la liste des
supports existants, on peut mettre n'importe quoi...

Je suis également ouvert à toutes autres
suggestions/modifications pour vu que j'arrive au bon

résultat...

Merci d'avance

PS : merci à Raymond Access MVP, pour une réponse aussi
rapide sur mon premier message.

.