|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Guenaël LE MERRERconsultant environnement et développement d'applications de base de données Inscription : janvier 2006 Messages : 210 ![]() |
Bonjour
Tout est presque dans le titre...je cherche à faire une requête avec une clause where de type IN (1;2;3;4;5;10;100) ce qui fonctionne très bien quand je le tape ainsi mais... cette liste de nombre est issue d'une sélection d'une liste multiple d'un formulaire, je pensai donc y faire référence ainsi : IN (Forms!monform!machaine) mais que néni, rien ne fonctionne...avec des ; ou des , dans ma chaîne... j'ai même essayé avec un IN (Eval("Forms!monform!machaine")) pas mieux... quelqu'un a t'il une idée ? ou bien comment filtrer une requête à partir du résultat d'une sélection de liste multiple ? merci de votre aide guen |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Développeur amateur Inscription : mars 2009 Messages : 176 ![]() |
Bonjour,
Qu'est ce que tu veux dire par liste multiple? Est ce une liste déroulante , des cases à cocher ou bien autre chose? Si c'est une liste déroulante, une solution consiste à utiliser une boucle recordset pour alimenter le IN() par l'ensemble des valeurs de la liste déroulante Cordialement |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Guenaël LE MERRERconsultant environnement et développement d'applications de base de données Inscription : janvier 2006 Messages : 210 ![]() |
Bonjour
c'est une liste à choix multiple (pas déroulante). je n'ai pas de souci pour créer ma chaîne en fonction de mes sélections dans la liste 1;20;13;45;5;6 mais c'est pour récupérer cette chaîne dans ma clause IN de la requête que ça coince... c'est plus compliqué de passer par un recordset (ce qui serait effectivement tout à fait possible) car cette requête alimente un état. mon formulaire avec cette liste multiple est en réalité un formulaire de filtre/tri de cet état. à moi que je crée ma requête en vba et que je mette à jour le sql toujours en vba mais je pensai qu'il y aurait une solution plus rapide...je trouve bizarre que je ne puisse pas récupérer ma chaîne dans un classique paramètre de requête |
|
|
00
|
|
|
#4 | |||
|
Membre confirmé
![]() Développeur amateur Inscription : mars 2009 Messages : 176 ![]() |
Bonjour,
Maintenant, je comprends mieux ton besoin. Citation:
Maintenant que nous pouvons récupérer les valeurs, la question qui se pose est comment les mettre au format de la clause « IN » de la requête SQL càd comme suit : In(val1;Val2;,,,,) A mon sens il y’a 2 solutions . Solution 1 : Elle consiste à concaténer les valeurs sélectionnées en veillant à les separer par des « ; » et à mettre le résultat dans une variable qui sera placée ensuite dans la clause IN. Cette solution parait simple mais nécessite toutefois de passer par un "querydef " pour composer la chaine SQL vu que le requêteur graphique d'Access (QBE) n'accepte pas qu'on insère directement des variables comme paramètres dans une requête. Mais comme les querydef suppose une manipulation par VBA de la chaine SQL , cette solution ne me semble pas conseillé pour toi Solution2: cette solution est de loin la plus simple à mettre en œuvre. Elle consiste à alimenter le IN par les données d'une table qui contiendra les valeurs sélectionnées dans la liste de choix. Le record source de ton état ressemblera donc un peu à ça: « select .....where id in (select * from T_SELECTION) ». La table T_SELECTION quant à elle sera composée d'un seul champ et sera alimentée par recordset Voici un exemple de code pour alimenter cette table Code :
Cordialement, |
|||
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Guenaël LE MERRERconsultant environnement et développement d'applications de base de données Inscription : janvier 2006 Messages : 210 ![]() |
Merci pour cette réponse
Effectivement, je n'avais pas penser à la table temporaire..., c'est encore la meilleure solution. je la remplis depuis mon formulaire (en dao ou en sql) puis je la lie dans ma requête directement (et je mets ma requête en source de données de mon état). Bien vu ! je suis passé par du sql de ce type : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com