[SQL Access]

Fermé
greg-gwened - 13 mai 2008 à 09:43
 greg-gwened - 13 mai 2008 à 17:19
Bonjour,

Je travaille souus access et je souhaite effectuer une jointure sur un champ de type chaine de caractère.
Cependant, les contraintes de saisie n'était pas les même pour les deux tables et je constate quelques erreurs de frappe.
Voici quelques exemples (accents, tirets, fautes de frappe, ...):

Table 1: | Table 2:
|
Champ1 | Champ2
|
Jean Pierre Dupont | Jean-Pierre Dupont
Aimee Dupont | Aimé Dupont
Georges Dupond | Georges Dupont



SELECT *
FROM Table1, Table2
WHERE Table1.Champ1=Table2.Champ2


Je souhaiterais donc effectuer cette jointure de façon à inclure une tolérance de deux ou trois caratères différents entre les deux champs.
Merci d'avance

greg-gwened

2 réponses

byakhlefncr Messages postés 260 Date d'inscription vendredi 1 juillet 2005 Statut Membre Dernière intervention 11 septembre 2008 63
13 mai 2008 à 14:00
bonjour,


A ma connaissance pour faire ce que tu demandes il faut utiliser du VB.
car on peux utiliser la clause SQL "LIKE" mais avec un parcours de la chaine à rechercher.

pour l'utilisation de deux table simultanément c'est un peu compliqué.

Voici une fonction pour te donner une condition sur chaine à rechercher avec une tolérence de un caractère :

////////////////////////////////////////////////////
Function GetCondition(Champ1, s As String) 'Ou "Champ1" est le nom du champ du filtre, et "s" est la chaine recherchée
Dim SQL As String
SQL = "(" & Champ1 & " = '" & s & "')"
For i = 1 To Len(s)
SQL = SQL & " or (" & Champ1 & " LIKE '" & Left(s, i - 1) & "?" & Mid(s, i, 1) & Right(s, Len(s) - i) & "')"
Next i
If s <> "" Then
SQL = SQL & " or (" & Champ1 & " LIKE '" & s & "?')"
End If
GetCondition = SQL
End Function
////////////////////////////////////////////////////
0
greg-gwened
13 mai 2008 à 17:19
Merci pour ta réponse mais je ne connais pas le VB
Je vais tout de meme étudier cela car au dela du sujet du post, cela m'interresse.

Cependant si quelqu'un connait un moyen de resoudre mon probleme en utilisant uniquement le SQL je suis preneur.
Merci
0