|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Matte Francois Inscription : octobre 2010 Messages : 2 ![]() |
Bonjour à tous
Je tente de faire une requête multicritères et pour ce je me suis inpiré grandement de toute l'info donnée sur ce forum. Je vous explique: à partir de champs texte du formulaire toutes mes requêtes fonctionnent sauf un champ en multicriteres, toutefois si je lance un requête sur le même champ en critère simple cela fonctionne. Si je vous demande de l'aide ce n'est pas sans avoir fait vérifié ma requête mais personne ne comprends Voici donc le texte de mes requêtes Multi Code sql :
Requete simple Code sql :
Je peux peut-être ajouté qu'avec certains mots elle sélectionne une petite quantité d'enregistrement mais la requête simple trouve tous les enregistrements. espérant avoir été clair Je vous remercie à l'avance |
||||
|
|
00
|
|
|
#2 | ||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Je pense que tu t'es compliqué la vie.
Essaye pour voir : Code sql :
Si cela ne sort pas de données quand les champs sont null met NZ([TonChampCritere],"") ex : Code sql :
T_Cardex.CLIENT LIKE '*' & nz([forms]![cardex98]![Texte156],"") & '*' Attention la fonction Nz() est a utiliser avec modération car sur les nombres décimaux il arrive qu'elle fasse sauter la partie décimal ... pas cool. 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 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Francois1234 et Marot_r,
Je me permets de m'immiscer... D'un point de vue plus général, je ne suis pas certain que Access sache gérer un VraiFaux (IIf) à l'intérieur d'un WHERE...
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#4 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Richard_35, je viens de faire un test car j'avais un doute et je confirme que Access accepte le iif() dans where.
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
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Merci pour ton test, Marot_r.
Juste pour comprendre (simplification de la requête de Francois1234) : Code sql :
SELECT toto, titi FROM TABLE WHERE toto LIKE iif(titi="1";"A*";"B*") extraire tous les enregistrements de table dont toto commence par "A" si titi="1" ou toto commence par "B" si titi<>1 ? Je n'ai pas Access sous la main mais, si Access arrive à traiter cela, alors chapeau !
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Matte Francois Inscription : octobre 2010 Messages : 2 ![]() |
Merci à tous.
Ma façon de procéder s'appliquait au formulaire de recherche au moment ou un champ du formulaire n'est pas renseigné la recherche se fait sur les champs qui sont renseignés. Donc 4 champs dans la table dont comme exemple Mandant Client Ville BBBBB RRRRR FFFFF CCCC QQQQ YYYY DDDD LLLLLL FFFFF BBBBB RRRRR YYYYY Je cherche à partir d'un formulaire ou il y a trois zone de texte soit texte1 pour Mandant texte2 pour client et texte3 pour ville trouver le ou les enregistrement Mandant ayant comme Mandant BB et comme Ville FF. Tout cela fonctionne. Je rajoute Descriptio qui est le quatrième champ de la table (champ teste) et un quatrième champ de formulaire texte4 pour Descriptio Mandant Client Ville Description BBBBB RRRRR FFFFF UUUUUUU CCCC QQQQ YYYY OOOOOO DDDD LLLLLL FFFFF OOOOOO BBBBB RRRRR YYYYY OOOOOO Ma prochaine recherche dans texte4 j'inscris UUU les autres texte1 texte2 et texte3 ne sont pas renseignés alors j'exécute et aucun enregistrement ne sort par contre si j'inscris OOO alors j'obtient BBBBB RRRRR YYYYY OOOOOO Je n'obtient pas les 2 autres soit CCCC QQQQ YYYY OOOOOO DDDD LLLLLL FFFFF OOOOOO je n'y comprend vraiment rien un détail: pour être certain qu'il n'y avait pas un bogue avec le la zone de texte, je l'ai recré plusieurs fois, j'ai changé son nom (remplacé Texte161 par varie) J'ai essayé la solution proposée mais il faut que le champ texte du formulaire soit renseigné ou non Encore une fois merci pour votre aide |
|
|
00
|
|
|
#7 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 470 ![]() |
Code :
J'ai essayé la solution proposée mais il faut que le champ texte du formulaire soit renseigné ou non
Une autre solution consiterai à générer le SQL à la volée avec seulement les champs nécessaires. Tu peux voir le tutorial à ce sujet sur le site. Richard_35, oui, j'ai fait un test très semblable à celui que tu proposes et Access est capable de traiter le iif() dans la clause Where. 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
|
|
|
#8 |
|
Invité de passage
![]() Inscription : septembre 2009 Messages : 4 ![]() |
D'abord un très grand MERCI pour votre aide.
Je ne crois pas qu'il puisse y avoir une solution dans l'immédiat et comme je serai en vacance pour les 3 prochaines semaines et que cette petite BD doit être livrée demain en fin de journée (je suis québécois donc il me reste environ 8h) j'ai pensé refaire la table, y transférer les données sans utiliser de requête (faire du copier/coller) et refaire le formulaire. Reprendre la requête d'un bout à l'autre et tester. Croyez-le ou non ça fonctionne. Alors il ne me reste qu'à réaliser à nouveau tout le travail de présentation du formulaire, les boutons et tout sera complété. À mon retour je tenterai de faire quelques tests, entre autre en remplaçant l'ancienne table et tenté de résoudre. C'est pourquoi je ne met pas encore la mention "Résolu" car j'aimerais y voir plus clair et aussi pour vous informer, si je trouve Pour répondre à Marot_r, j'ai copié ton script SQL "tel quel" en modifiant simplement les noms de mes textbox pour adapter. J'avais comme résultat tous les enregistrements de ma table. Malheureusement je n'ai pas conservé ce test. Je te remercie bien gros pour tout(ta disponibilité, tes tests et tes explications...etc,) et aussi pour les réponses que tu as données aux autres intervenants. BRAVO Je n'ai malheureusement plus le temps de vérifier ce qui a pu se passer mais ici nous étions 4 programmeurs à chercher et aucun ne comprend. J'aimerais avant de quitter ajouter que souvent on s'imagine que ACCESS ne peut faire certaine chose alors que de version en version il étonne. Encore une fois MERCI |
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour à tous,
Confirmation du bon fonctionnement de l'imbrication du IIF dans la clause WHERE : Code sql :
SELECT toto, titi FROM Table_test WHERE toto LIKE IIf(titi="1" , "A*" , "B*") Code sql :
SELECT toto, titi FROM Table_test WHERE toto LIKE "A*" Code sql :
SELECT toto, titi FROM Table_test WHERE toto LIKE "B*" Puissant, je trouve. Merci Marot_r.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com