Rechercher : dans
Par :

Requête SQL avec LIKE

Dernière réponse le 12 sep 2007 à 14:15:00 gaudian, le 5 sep 2007 à 11:35:47 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « Requête SQL avec LIKE » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
SQL - Restriction VoirExpression des restrictions Une restriction consiste à sélectionner les lignes satisfaisant à une condition logique effectuée sur leurs attributs. En SQL, les restrictions s'expriment à l'aide de la clause WHERE suivie d'une condition logique...
Exécution de requêtes avec JDBC VoirExécution d'une requête SQL Pour exécuter une requête SQL, il s'agit dans un premier temps de créer un objet Statement, pouvant être obtenu à partir de l'objet Connection. Un objet ResultSet permettra de récupérer les données en provenance de...

1

Reivax962, le 5 sep 2007 à 12:04:36

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

Répondre à Reivax962

2

gaudian, le 5 sep 2007 à 13:38:19

J'ai une erreur de syntaxe

Répondre à gaudian

3

Reivax962, le 5 sep 2007 à 13:41:51

Dis en plus !
une erreur sql ? une erreur vb ? quel est le message de l'erreur ?

Répondre à Reivax962

4

gaudian, le 5 sep 2007 à 13:51:32

L'erreur est la suivante :

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

Répondre à gaudian

5

gaudian, le 5 sep 2007 à 13:54:08

J'ai trouvé il manqué un " a la fin.
Maintenant, il me dit que je n'ai aucun enregistrement en cours

Répondre à gaudian

6

 gaudian, le 12 sep 2007 à 14:15:00

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) & "*' ")

Répondre à gaudian