cs_monaco63
Messages postés76Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention15 juin 2009
-
6 sept. 2007 à 09:10
cs_monaco63
Messages postés76Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention15 juin 2009
-
12 sept. 2007 à 14:09
Bonjour,
Je souhaiterais savoir comment faire pour rechercher une partie d'une chaîne de caractères, je m'explique :
je dispose de 2 tables ou il y a des enregistrements (nom, prenom, adresse, etc.)
- ma 1ère table comprend un enregistrement tel que TOTO pour le nom
- ma 2ème table comprend un enregistrement tel que M. TOTO pour le nom (c'est la même personne)
quand j'exécute le code ci-dessous :
il ne me trouve pas M. TOTO à cause du M. pour les monsieur, (j'ai également Mlle. Mme.)
je ne peux pas changer la 2ème table pour ceux qui vont me dire enlève M. ou Mme. ou encore Mlle.
Set DB1 = DBEngine(0)(0)
Set rsNewResponsable = DB1.OpenRecordset("SELECT * FROM PVHT_VH")
Set rsNewResponsable2 = DB1.OpenRecordset("SELECT * FROM PVHT_RESP")
'Pour la table PVHT_RESP
Do Until rsNewResponsable2.EOF
'Si le champ de la table PVHT_RESP correspond
If Trim(lsAncienResponsable) = Trim(rsNewResponsable2.FindFirst.Fields("RESPONSABLE")) Then
rsNewResponsable2.EDIT
rsNewResponsable2.Fields("RESPONS_SITE") = RESPONSABLE.Text
rsNewResponsable2.Update
Exit Do
End If
rsNewResponsable2.MoveNext
Loop
J'ai donc voulu changer ma requête intitulée rsNewResponsable2 par celle-ci
Set rsNewResponsable2 = DB1.OpenRecordset("SELECT * FROM PVHT_RESP WHERE RESPONSABLE LIKE ' & %lsAncienResponsable &% '")
Le problème est que mon application plante car il me dit que je n'ai aucun enregistrement en cours.
cs_monaco63
Messages postés76Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention15 juin 2009 12 sept. 2007 à 14:09
C'est bon je viens de trouver la solution à mon petit problème voici la requête SQL correcte :
Set rsNewResponsable2 = DB1.OpenRecordset("SELECT * FROM PVHT_RESP WHERE UCase(RESPONSABLE) LIKE '*" & UCase(lsAncienResponsable) & "*' ")
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 6 sept. 2007 à 23:00
salut
ta requete semble fausse
"SELECT * FROM PVHT_RESP WHERE RESPONSABLE LIKE '%" & lsAncienResponsable & "% '"
Cette requete me semble mieux construite??
Attention aux espaces entre
' et %
% et "
Et lsAncienResponsable ne doit pas appartenir la requete c'est une variable, sinon access cherchera les enregistrements avec lsAncienResponsable comme responsable et c'est normal qu'il en trouvera jamais
Tu pourquoi tu ne mettrais pas une colonne calculée a ta table pour gérer ta table.
Alter table x
add c varchar (50)
update x
set c= trim(replace(replace(replace(n,'M.',''),'mme',''),'mlle',''))
c'est pas sur que ca fonctionne.
Normalament pour bien faire tu devrais mettre une foreign key technique et non fonctionnelle. Genre un entier auto incrémenté. Et liée les tables entre elles.
cs_monaco63
Messages postés76Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention15 juin 2009 7 sept. 2007 à 15:31
Salut, ta requete ne fonctionne pas et elle est identique à la mienne, il me dit que je n'ai pas d'enregistrement.
Mon boss souhaite que je fasse une requete comme ça avec le LIKE.
Peux tu m'aider un peu plus merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_monaco63
Messages postés76Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention15 juin 2009 7 sept. 2007 à 16:02
J'ai testé ma requête dans ACCESS et elle fonctionne.
Quand je la met dans mon code VB en laissant la valeur en dur cela ne fonctionne plus "aucun enregistrement".
J'ai vu sur un site Internet que si les % ne fonctionnaient pas il fallait les remplacer par des *.
Je vais essayer avec des *