opérateur In list ???

Le
débutant
Salut tous,

J'ai un formulaire que j'utilise pour entrer des critres
de recherche (date dbut et date fin, ainsi qu'une chaine
de caratres qui correspond une liste de produits ex:
chaine=produitA,produitB,.).

Une fois les critres saisis je lance une requte qui les
utilise. Ca fonctionne pour les date et si la chaine ne
contient qu'un produit. Si la chaine contient plusieurs
produits, ca marche pas!

Dans la requte, comme critre j'utilise le paramtre
In (chaine). En fait j'utilise prcisement In ([Forms]!
[mon_Formulaire]![produit])

1) quelle est la bonne syntaxe pour le paramtre
2) Dans SQL, la chaine serait ('produitA','produitB',)
Dois-je la construire de cette faon ou diffrement?

Merci de votre aide
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel Walsh
Le #5090591
Salut,


WHERE ( "," & param & "," ) LIKE ( "*," & champ & ",*" )


où param est fourni sans espace après les virgules:

produitA,produitB,produitC

et non

produitA, produitB, produitC



Fonctionnement: si le champ contient une des valeurs, disons, produitC,
alors, après concaténation, on se retrouve avec:


WHERE ",produitA,produitB,produitC," LIKE "*,produitC,*"

ce qui est vrai, et donc, l'enregistrement est conservé. Autrement,
l'enregistrement n'est pas conservé. Cette formulation utilisant LIKE est
donc logiquement équivalente à un IN( ) à liste variable.

Par contre, aucun index ne peut être utilisé, et c'est donc potentiellement
lent. Si la liste est longue ou si la table contient beaucoup
d'enregistrements, je suggère plutôt de procéder par INNER JOIN entre la
table de base et une table temporaire qui contiendrait les choix recherchés.




Espérant être utile,
Vanderghast, Access MVP


"débutant" news:a38e01c434f7$137a11b0$
Salut à tous,

J'ai un formulaire que j'utilise pour entrer des critères
de recherche (date début et date fin, ainsi qu'une chaine
de caratères qui correspond à une liste de produits ex:
chaine=produitA,produitB,....).

Une fois les critères saisis je lance une requête qui les
utilise. Ca fonctionne pour les date et si la chaine ne
contient qu'un produit. Si la chaine contient plusieurs
produits, ca marche pas!

Dans la requête, comme critère j'utilise le paramètre
In (chaine). En fait j'utilise précisement In ([Forms]!
[mon_Formulaire]![produit])

1) quelle est la bonne syntaxe pour le paramètre
2) Dans SQL, la chaine serait ('produitA','produitB',...)
Dois-je la construire de cette façon ou différement?

Merci de votre aide
Publicité
Poster une réponse
Anonyme