Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2011, 10h21   #1
Invité de passage
 
Femme Ondine
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Femme Ondine
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
Par défaut Listes déroulantes dépendantes

Bonjour tout le monde,

J'ai cherché un message correspondant à mon problème mais n'en ai pas trouvé. J'espère ne pas faire de doublon.

Je travaille sur access 2000 pour construire une base de données.

J'ai créé des formulaires dans lesquels sont plusieurs listes déroulantes. Ces formulaires ont en fait pour but de comparer les enregistrements d'une table en fonction de critères, qui sont ces listes déroulantes.
Un bouton permet d'ouvrir un état basé sur une requête. Cette requête est elle même basée sur les valeurs choisies dans les listes déroulantes du formulaire.
Par exemple, l'utilisateur choisit dans les listes déroulantes une enseigne, un pays, et une gamme de produit. Il aura un état répertoriant tous les produits correspondants.

Jusqu'à maintenant, j'avais réussi à faire ces requêtes. Lorsque rien n'était choisi dans une ou plusieurs des listes déroulantes, tous les enregistrements étaient sélectionnés.
Mon problème venait du fait que les contenus des listes déroulantes ne dépendaient pas les uns des autres.
Grâce à ce site, j'ai pu résoudre ce problème avec le post "Comment faire en sorte que le contenu d'une zone de liste déroulante dépende de la valeur d'une autre liste ?"
Mais maintenant, je suis obligée de sélectionner un enregistrement dans mes listes déroulantes.

Comment puis je faire dépendre les contenus des listes les uns des autres tout en laissant la possibilité à l'utilisateur de choisir tous les enregistrements, en ne sélectionnant rien dans les listes déroulantes par exemple?

Je tiens juste à préciser que je n'ai aucune notion en VBA. Je sais juste très bien faire des copiers collers

Je termine mon stage dans une semaine et suis donc un petit peu stressée, j'espère que vous pourrez m'aider!

Bonne journée,
Ondine
Didoo78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 14h01   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Code :
Je sais juste très bien faire des copiers collers
C'est déjà une grande qualité :-).

Peux-tu poster le SQL de ta requête de sélection pour confirmation mais voici ce que je te sugère :

mettre comme critère :

Code sql :
LIKE """" & (iif(isnull([Forms]![NomTonForm]![NomTonChampCritere]);"*"; [Forms]![NomTonForm]![NomTonChampCritere]) & """"

Cela sélectionnera tous les enregistrements si tu ne reseigne rien et seulement ceux qui répondent à un critère si tu le saisie.

Autre solution : faire une requête UNION dans ta liste de sélection et ajouter 'Tous' comme critère.

Quelque chose comme

Code sql :
1
2
3
4
SELECT [TaTable].[tonCritere] AS [Critere],[TaTable].[TonLibelle] AS Libelle FROM [TaTable]
union
SELECT SELECT "*" AS Critere, "-Tous" AS Libelle
ORDER BY [Libelle]

et comme critère :

Code sql :
LIKE """" & [Forms]![NomTonForm]![NomTonChampCritere] & """"

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 16h39   #3
Invité de passage
 
Femme Ondine
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Femme Ondine
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
Merci pour ton aide!

Alors ma requête est composée de plusieurs sous requêtes dont le nombre dépend du nombre de critères.

Je prend l'exemple du formulaire "Consulter les enseignes" dans lequel il y a 3 listes déroulantes: le type d'enseigne, le nom de l'enseigne et le service proposé par l'enseigne.
A la base ces tables sont reliées comme ça:
Type d'enseigne (ID type enseigne, nom) --- Enseigne (ID type enseigne, ID enseigne, nom) --- Service enseigne (ID service, ID enseigne) -- Service (ID service, nom)

Je voudrais que la liste déroulante nom de l'enseige dépende des deux autres.

Ma requête est composée de 3 sous requêtes:
- Consulter enseignes a :
SELECT Enseigne.ID_enseigne, Enseigne.nom_enseigne, Enseigne.ref_type_enseigne
FROM Enseigne
WHERE (((Enseigne.ref_type_enseigne) Like [Formulaires]![Consulter les enseignes]![Modifiable13] & "*"));

-Consulter enseignes b:
SELECT Service.ID_service, Service.nom_service
FROM Service
WHERE (((Service.ID_service) Like [Formulaires]![Consulter les enseignes]![Modifiable15] & "*"));

- Consulter enseignes c:
SELECT [Consulter enseignes a].ID_enseigne, [Consulter enseignes a].nom_enseigne, [Consulter enseignes b].ID_service, [Consulter enseignes b].nom_service
FROM ([Consulter enseignes a] INNER JOIN [Service Enseigne] ON [Consulter enseignes a].ID_enseigne = [Service Enseigne].ref_enseigne) INNER JOIN [Consulter enseignes b] ON [Service Enseigne].ref_service = [Consulter enseignes b].ID_service;

Je met donc la requete Consulter enseignes c en contenu de la liste déroulante nom de l'enseigne.

Et je met les procédures événementielles indiquées dans le post du haut dans l'événement sur changement des listes déroulantes service et type d'enseigne.

La dernière fois que j'ai fait ça, ça ne fonctionnait pas. Là ça a l'air, ce qui m'étonne.. Qu'est ce que tu en penses?

J'ai essayé ce que tu m'as conseillé (avec la première fonction sql) mais la résultat de la troisième requête est vide alors que je souhaiterais que tous les enregistrements soient sélectionnés... je ne sais pas pourquoi car j'ai l'impression que le code sql que tu m'as donné convient...

Merci de ton aide, encore!
Ondine
Didoo78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 16h51   #4
Invité de passage
 
Femme Ondine
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Femme Ondine
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
Re bonjour,

Je viens de réaliser une de mes erreurs:
J'ai mis une fonction LIKE [le champ] &"*" dans les ID. Donc j'obtiens en résultat de requete tous les enregistrements ayant un chiffe en commun comme les ID 2, 20, 21 par exemple. (ils n'ont bien sur rien à voir)

Donc soit je met ça dans le nom... mais ça ne me parait pas être une bonne idée. ou j'arrive à faire ce que tu m'as dit... help ^^

Bonne journée,
Ondine
Didoo78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 17h13   #5
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Si tu travailles avec les ID il ne faut pas mettre & "*" sinon tu obtient ce que tu as décrit

Je reposte ici ma solution qui va marcher aussi pour les ID.

Code :
LIKE """" & (iif(isnull([Forms]![NomTonForm]![NomTonChampCritere]);"*"; [Forms]![NomTonForm]![NomTonChampCritere]) & """"
iif(isnull([Forms]![NomTonForm]![NomTonChampCritere]); Teste si le champ est null
"*"; si le champ est null permet d'avoir tous les éléments
[Forms]![NomTonForm]![NomTonChampCritere]) si le champ est renseigné permet d'avoir seulement l'élément désiré.
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 18h20   #6
Invité de passage
 
Femme Ondine
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Femme Ondine
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
oui effectivement ça a l'air de marcher! je revérifie ça demain.

Merci beaucoup pour ton aide
Bonne soirée,
Ondine
Didoo78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h35.


 
 
 
 
Partenaires

Hébergement Web