Requête SQL avec LIKE

Résolu/Fermé
gaudian Messages postés 62 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 12 septembre 2007 - 5 sept. 2007 à 11:35
gaudian Messages postés 62 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 12 septembre 2007 - 12 sept. 2007 à 14:15
Bonjour à tous,
J'ai un petit soucis avec une requête SQL.
Je travaille sous VB et j'interroge une base de données situées sous ACCESS

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")

rsNewResponsable.MoveFirst
rsNewResponsable2.MoveFirst

'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 par celle-ci :
Set rsNewResponsable2 = DB1.OpenRecordset("SELECT * FROM PVHT_RESP WHERE RESPONSABLE LIKE & '% lsAncienResponsable% ' & ")

Mais l'application plante car il ne trouve aucun enregistrement, alors que quand j'exécute cette requête directement sur ma base de données, celle-ci fonctionne.

Merci pour votre aide

6 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
5 sept. 2007 à 12:04
Bonjour,

Il me semble que tu t'emmêles un peu dans les ".
Essaie ceci :
Set rsNewResponsable2 = DB1.OpenRecordset("SELECT * FROM PVHT_RESP WHERE RESPONSABLE LIKE '%" & lsAncienResponsable & "%')

Xavier
0
gaudian Messages postés 62 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 12 septembre 2007 3
5 sept. 2007 à 13:38
J'ai une erreur de syntaxe
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
5 sept. 2007 à 13:41
Dis en plus !
une erreur sql ? une erreur vb ? quel est le message de l'erreur ?
0
gaudian Messages postés 62 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 12 septembre 2007 3
5 sept. 2007 à 13:51
L'erreur est la suivante :

Erreur de compilation:
Attendu: séparateur de liste ou )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gaudian Messages postés 62 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 12 septembre 2007 3
5 sept. 2007 à 13:54
J'ai trouvé il manqué un " a la fin.
Maintenant, il me dit que je n'ai aucun enregistrement en cours
0
gaudian Messages postés 62 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 12 septembre 2007 3
12 sept. 2007 à 14:15
Bon, je viens de trouver la solution en fouinant un peu plus en détails sur Internet.

Je vous passe la requête SQL
Set rsNewResponsable2 = DB1.OpenRecordset("SELECT * FROM PVHT_RESP WHERE UCase(RESPONSABLE) LIKE '*" & UCase(lsAncienResponsable) & "*' ")
0