Recherche grâce à un recordset ADO utilisant Like

Résolu
cs_djabi Messages postés 1 Date d'inscription jeudi 27 novembre 2003 Statut Membre Dernière intervention 8 décembre 2005 - 8 déc. 2005 à 19:25
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 8 déc. 2005 à 19:56
toutes les déclarations st bien faites Le numero recherché est 20051227986/CO/PM/01
le code:

Macnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\dbtl\BDCAISSEN.mdb;Persist Security Info=False"
Adorst.CursorLocation = adUseClient
critere = " select * from TABLE where NUMERO like " + "'" + "*" + "6/CO/PM/01" + "' "
Adorst.Open critere, Macnn, adOpenStatic, adLockReadOnly
if Adorst.recordcount = 1 then
Msgbox "le numero existe"
end if

Je veux rechercher ledit numero dans une table DBF que j ai lié dans une Access Quand je remplace sa valeur ds la requête sa marche. Mais lorsque je met le début du numero et * pour le reste sa marche pas Pourquoi???

1 réponse

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
8 déc. 2005 à 19:56
Salut
Normal, tu ne respectes pas les règles ni de VB ni de SQL :
- VB : Pour concaténer deux chaines, il faut utiliser le symbole & (pas le +)
- VB : Quand tu veux insérer un " dans une chaine, il suffit de le doubler :
Chaine = "Bonjour ""toto""" affichera Bonjour "toto"
- SQL peut utiliser comme délimiteur de chaine, soit " soit '
C'est une chance car VB utilise déjà le "
Donc, pour ne pas être embété, utilise le ' pour les champs SQL
- En SQL, le symbole a utiliser pour "tous" est % (pas *)

Une fois ces règles appliquées, ta requète devient :
critere = "select * from TABLE where NUMERO like '%" & "6/CO/PM/01" & "'"
Bien que celle-ci soit suffisante :
critere = "select * from TABLE where NUMERO like '%6/CO/PM/01'"

- En Access, certains caractères sont spéciaux : C'est le cas de \ et '
Je ne suis pas sûr que ce soit pareil pour le /
Si c'est le cas, quand tu cherches un de ces caractères, il faut l'encadrer avec des crochets [et ]
Alors, il faudra écrire :
critere = "select * from TABLE where NUMERO like '%" & "6[/]CO[/]PM[/]01" & "'"

D'autre part, comme tu fais une recherche avec un %, il y a de fortes chances qu'un jour tu trouves plus qu'un seul enregistrement compatibles avec cette demande :
Dans ton code, tu mets :
if Adorst.recordcount = 1 then
Je te conseille de mettre
if Adorst.recordcount > 0 then

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
3