tri_yann
Messages postés124Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention19 septembre 2013
-
21 nov. 2008 à 15:00
tri_yann
Messages postés124Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention19 septembre 2013
-
22 nov. 2008 à 00:39
Bonjour,
J'ouvre un recordset ADODB.recordset.
J'effectue un filtre dessus avec la syntaxe :
<hr />Dim rst as New ADODB.Recordset
rst.open "select ...", connection
rst.filter = "[champ] Like '%toto'"
<hr />
VBA me retourne l'erreur sur la dernière ligne :
<hr />
Erreur d'exécution '3001':
Les arguments sont de type incorrect, en dehors des limites autorisées ou en conflit les uns avec les autres.
<hr />
Chose curieuse, ces syntaxes fonctionnent :
rst.filter = "[champ] = 'toto'"
rst.filter = "[champ] Like '%toto%'"
rst.filter = "[champ] Like 'toto%'"
Quelqu'un sait-il pourquoi le filtre : Champ like '%toto'
ne fonctionne pas ?
NHenry
Messages postés15151Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 4 septembre 2024159 21 nov. 2008 à 15:27
Bonjour,
1) je te conseil plutôt de filtrer avec la clause WHERE directement dans ta requête.
2) Tu as essayé avec les * et ?, car Access, ce sont les jokers (très standard n'est-ce pas :)
tri_yann
Messages postés124Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention19 septembre 20133 21 nov. 2008 à 15:42
Merci de ta réponse NHenry,
J'ai oublié de préciser je suis dans un projet Access (adp). Je m'adresse à SQL Serveur 2005. C'est pour ça que j'utilise les %. Je n'ai pas le choix de ce côté là.
L'utilisation de la clause "Where" est une possibilité mais trop compliqué à mettre en place. Le "recordsource" du recordset n'est jamais identique des fois il y a un where, des fois non.
D'autre part l'avantage du filtre, c'est la rapidité et de ne pas perdre le "recordsource" d'origine. C'est volontairement et pas par plaisir que j'ai choisi l'option "filtre".
tri_yann
Messages postés124Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention19 septembre 20133 22 nov. 2008 à 00:39
Bonjour,
Ca marche mais ne donne pas le bon résultat...
avec "= '%toto'", SQL cherche le caractère "%" en tant que caractère et pas comme joker.
Avec un "Like '%toto'", il va chercher tout ce qui se termine par "toto".