[VB6] Problème avec l'opérateur LIKE en SQL
Bonjour.
Je pensais avoir une bonne expérience dans l'utilisation de SQL en VB. Mais je me trouve confronté à un phénomène bizarre et je voudrais savoir si quelqu'un a déjà eu ce problème. Peut-être aussi qu'un oeil neuf verra tout de suite un truc qui crève les yeux et que je ne vois pas.
Soit une connexion ADODB nommée gcnxConnect ouverte sur une base de données Access 2000. Cette base renferme une table "T_Membres" qui contient les noms et adresses d'adhérents à une association. J'ai des soucis avec une requête sur cette table qui ne ramène jamais aucun enregistrement si on utilise la clause WHERE avec LIKE et un masque contenant des caractères génériques.
Lisez bien le code ci-dessous, écrit et exécuté dans le volet de débogage. Les trois requêtes ont été écrites par copier-coller, il n'y a donc normalement aucun différence de syntaxe, excepté le masque de sélection.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| sReq = "SELECT * FROM T_Membres WHERE Ville LIKE 'cournonterral'"
Rs.Open sReq, gcnxConnect, adOpenForwardOnly, adLockReadOnly
Print Rs.EOF
False
Rs.Close
sReq = "SELECT * FROM T_Membres WHERE Ville LIKE 'cour*'"
Rs.Open sReq, gcnxConnect, adOpenForwardOnly, adLockReadOnly
Print Rs.EOF
True
Rs.Close
sReq = "SELECT * FROM T_Membres WHERE Ville LIKE 'cournon?erral'"
Rs.Open sReq, gcnxConnect, adOpenForwardOnly, adLockReadOnly
Print Rs.EOF
True
Rs.Close |
Comme on peut le constater, le seul cas où on ramène des enregistrements est celui où il n'y a pas de caractères génériques. L'inverse serait logique, mais dans ce sens ce n'est pas possible puisque les enregistrements ramenés dans la première requête répondent forcément aux deux autres filtres.
Le plus curieux est que les trois requêtes, exécutées sous access (copier-coller direct dans le texte SQL du générateur de requetes d'Access), fournissent toutes des résultats corrects.
Je suis perplexe...