Problème de filtre sur recordset ADODB

tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 - 21 nov. 2008 à 15:00
tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 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 ?

Cordialement

Yann

5 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
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 :)

0
tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 3
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".

Cordialement

Yann
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
21 nov. 2008 à 16:06
Bonjour,

Ben ça change tout.

Donc je te précise que je n'ai jamais utilisé cet méthode et ce type de projet.
Donc je ne puis t'aider d'avantage.

Cordialement.
Nicolas.

0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
22 nov. 2008 à 00:05
Salut,
As-tu essayé rst.Filter = "[champ] = '%toto'"  ?

Like associé à un Jocker, n' est-il pas un pléonasme ?
<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 3
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".

Ce n'est pas un pléonasme

Cordialement.

Yann
0
Rejoignez-nous