Recherche grâce à un recordset ADO utilisant Like

Résolu
Signaler
Messages postés
1
Date d'inscription
jeudi 27 novembre 2003
Statut
Membre
Dernière intervention
8 décembre 2005
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci