SQL - problème avec 'Like %'

Résolu
cs_droopy30
Messages postés
5
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
23 octobre 2008
- 4 oct. 2008 à 20:39
cs_droopy30
Messages postés
5
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
23 octobre 2008
- 23 oct. 2008 à 14:45
Bonjour,

Je tente de faire un petit programme sous DELPHI 2006 qui accède à une base de mots en ACCESS (1 table, 2 champs).
Je voudrais filtré le contenu de la base pour ne voir que, par exemple, les mots commençants par la lettre "A" et ayant un "S" comme 3ième lettre : ABS, ABSENT, ABSENTE,...

Facile, me direz vous !!!
Et bien pas tant que cela au vu des résultats que j'obtiens.

J'utilise les composants ADOConnection, ADOTable, DataSource.
Logiquement, ma requête devrait ressembler à ceci SELECT * FROM mots WHERE mot LIKE 'a_s%'. Or cette requête ne donne absolument aucun résultat.

- SELECT * FROM mots WHERE mot LIKE 'a_'
- SELECT * FROM mots WHERE mot LIKE 'a%'
et SELECT * FROM mots WHERE mot LIKE 'a*' me donnent tous les mots qui commence par la lettre "A". Ce qui n'est pas logique pour la première puisque le caractère "_" est censé remplacer 1 caractère et non plusieurs (je devrais avoir 'AS', 'AT', que des mots de 2 lettres - mais je peux y palier en rajoutant une condition sur la longueur des mots que je veux).

Il fut un temps lointain, j'avais réussi en VB avec : SELECT * FROM mots WHERE mot LIKE 'a?s*'. Le "?" remplaçant 1 et 1 seul caractère.


J'ai tourné le problème dans tous les sens. Lu et relu toutes les aides comme C:\Program Files\Fichiers communs\Borland Shared\BDE\LOCALSQL.HLP

J'en viens à me dire que j'ai un problème de configuration car dans tout ce que j'ai pu voir, personne a ce problème.

Camarades programmeurs, le néophyte en DELPHI que je suis,  vous en appelle A L'AIDE !!!!

Droopy30
A voir également:

7 réponses

cs_droopy30
Messages postés
5
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
23 octobre 2008

23 oct. 2008 à 14:45
PROBLEME RESOLU !

J'avais un mélo-mélo avec la propriété Filter de mon ADO_Query.

Merci à tous

Droopy30
3
cs_cantador
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
5 oct. 2008 à 23:25
bonsoir,
SELECT *
FROM CLIENT
WHERE SIGLECLIENT LIKE 'a_s%'

dans firebird nickel

cantador
0
cs_droopy30
Messages postés
5
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
23 octobre 2008

5 oct. 2008 à 23:33
Ben pas avec Access

Merci quand même.

Droopy30
0
cs_cantador
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
6 oct. 2008 à 15:47
Ben oui le sql access n'est pas aux normes internationales...
faut bien quelque chose pour se distinguer des autres...

essaie ceci avec access :

 WHERE (((MOT) Like "*a*s*"));

Je n'ai encore trouvé la solution sur une autre position de lettre...
c'est vraiment ch.. au possible...

cantador
0

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

Posez votre question
cs_droopy30
Messages postés
5
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
23 octobre 2008

6 oct. 2008 à 17:06
CH... !!! c'est peu dire....
Surtout que cela fonctionne très bien en VB avec la même base de données.
J'arrivais même à faire des recherches du type "... like '??bs?n*' " (tous les mots avec 'b' et 's' en 3 et 4ième position et 'n' en 6 ième !!!)

Droopy30
0
skyaero
Messages postés
26
Date d'inscription
lundi 25 octobre 2004
Statut
Membre
Dernière intervention
6 octobre 2008

6 oct. 2008 à 22:01
Bonsoir,

Quelle version d'access utilisez-vous ?

Dans un de mes programme en Delphi utilisant une base access, j'utilise la syntaxe identique à votre requete "SELECT * FROM mots WHERE mot LIKE 'a%'" à travers un ADOQUERY et cela fonctionne très bien.

Boris
0
cs_droopy30
Messages postés
5
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
23 octobre 2008

6 oct. 2008 à 22:15
Bonsoir Skyaero.

j'utilise Access 2003.
et la requête "SELECT * FROM mots WHERE mot LIKE 'a%'" fonctionne à merveille.... je suis d'accord.

Par contre "SELECT * FROM mots WHERE mot LIKE 'a_s%'" ne marche pas.

Imaginez : je fais des mots croisés. J'ai une définition pour un mot de 7 lettres et je sais que la 1ière est un "A" et la 3ième un "S".... donnez moi tous les mots qui correspondent à ces critères uniquement.
Si c'est pour chercher dans un dico, j'ai pas besoin d'un programme !

Droopy30
0