cs_djabi
Messages postés1Date d'inscriptionjeudi 27 novembre 2003StatutMembreDernière intervention 8 décembre 2005
-
8 déc. 2005 à 19:25
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 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???
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)