|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Ondine Inscription : août 2011 Messages : 4 ![]() |
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 |
|
|
00
|
|
|
#2 | ||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Code :
Je sais juste très bien faire des copiers collers 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 :
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. |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Ondine Inscription : août 2011 Messages : 4 ![]() |
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 |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Ondine Inscription : août 2011 Messages : 4 ![]() |
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 |
|
|
00
|
|
|
#5 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
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]) & """" "*"; si le champ est null permet d'avoir tous les élémentsA+
__________________
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. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Ondine Inscription : août 2011 Messages : 4 ![]() |
oui effectivement ça a l'air de marcher! je revérifie ça demain.
Merci beaucoup pour ton aide ![]() Bonne soirée, Ondine |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com