Requète LIKE ne sélectionne pas tous les enregistrements [Résolu]

Messages postés
44
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
7 août 2019
- - Dernière réponse : Notpa
Messages postés
44
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
7 août 2019
- 26 avril 2019 à 15:52
Bonjour !

J'ai codé un LIKE comme suit :

Global sMatch as Boolean
...
Do Until tb_koissé.EOF
sMatch = UCase(tb_koissé("nom")) Like UCase(cherche)
If sMatch = True Then
grille_search.Row = idx
grille_search.Col = 1
grille_search.Text = tb_koissé("nom")
...
End If
tb_koissé.MoveNext
Loop

Le champ cherche contient le masque *e*

La table (MS Access) contient les records suivants :


Quand j'exécute la routine, seul l'enregistrement 005 La boîte à coucou est sélectionné, pas les autres bien qu'ils contiennent aussi le e spécifié dans le masque .


Avez-vous une idée pourquoi tous les enregistrement contenant un e ne sont pas sélectionnés ?

Merci d'avance pour votre aide

Notpa
Afficher la suite 

2 réponses

Messages postés
44
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
J'ai testé avec du SQL :

Set tb_koissé = db.OpenRecordset("SELECT * FROM koissé WHERE nom LIKE 'cherche'")

Le champ 'cherche' contient *e*
--> recordcount = 0

Set tb_koissé = db.OpenRecordset("SELECT * FROM koissé WHERE nom LIKE '*e*'")
--> recordcount = 1, le premier de la liste (Folding Home)

Je ne comprends plus rien !

Merci d'avance !
Commenter la réponse de Notpa
Messages postés
44
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
7 août 2019
0
Merci
Malgré moults recherches sur le Net, je n'ai pas trouvé de solution. Alors, j'ai contourné le problème de manière suivante :

tb_koissé.MoveFirst
Do Until tb_koissé.EOF
work = UCase(tb_koissé("nom"))
cherche = UCase(cherche)
lg = InStr(1, work, cherche)
If lg <> 0 Then
grille_search.Row = idx
grille_search.Col = 1
grille_search.Text = tb_koissé("nom")
.....
End If
tb_koissé.MoveNext
Loop

Avec l'instruction InStr, je retrouve tout ce qui matche le contenu de chercher dans la table. Plus de wildcars, et ça me suffit dans ce cas. Par contre, il faut passer par UCase (ou LCase) car InStr est case sensitif.

Je passe en résolu bien que ce sujet ne le soit pas, mais j'ai un bypass qui me satisfait.

Merci à ceux qui m'ont lu.

Notpa
Commenter la réponse de Notpa