chmouette
Messages postés57Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention21 juillet 2005
-
25 mars 2005 à 11:43
chmouette
Messages postés57Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention21 juillet 2005
-
26 mars 2005 à 16:01
Voilà,
un jour au cours de mes pérégrinations sur le site, j'ai vu un article expliquant comment trouver un indice de corrélation entre 2 chaines, et je le trouve plus.
J'explique mon problème pour le cas où qq1 ai une solution.
Il se trouve que pour mon appli, comme j'ai une fonction de recherche, je ne veux pas qu'il soit possible d'entrer de nouvelles valeurs sauf après verification que la valeur n'est pas présente avec un autre format.
Si l'entrée des données était manuelle, ca irait, mais l'entrée se fait à partir de fichiers excel dans lesquels il y a :
- des erreurs de frappe,
- des formats différents dans les champs saisis.
Donc, lorsque l'application rencontre une nouvelle valeur, elle doit chercher les valeurs déjà présentes dans ma base, et proposer un choix entre les valeurs proches.
Cette fonction peut être VB ou SQL, avec une préférence pour SQL (temps de traitement inferieur, car une requête uniquement, et pas un traitement VB sur les résultats d'une requête)
Merci d'avance.
________________________________________________________________________
On ne devrait vivre qu'une minute et demie,
Le temps du premier baiser et du premier demi !
chmouette
Messages postés57Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention21 juillet 2005 25 mars 2005 à 14:53
Finalement j'ai dévoloppé une fonction récursive.
Je la poste, ca poura peut être aider qq1 :
Public Function get_difference(String1 As String, length1 As Integer, String2 As String, length2 As Integer) As Integer
If length1 0 Or length2 0 Then
get_difference = length1 + length2
Else
If StrComp(Left$(String1, 1), Left$(String2, 1)) = 0 Then
'les deux lettres sont égales
' on compare la suite
'*****************************
Private Function Min(a As Integer, b As Integer, c As Integer) As Integer
If a < b Then
If a < c Then
Min = a
Else
Min = c
End If
Else
If b < c Then
Min = b
Else
Min = c
End If
End If
End Function
Pour l'appel premier :
get_difference(String1, Len(String1), String2 , len(String2))
Si il y a des idées d'optimisation je suis preneur!
++
On ne devrait vivre qu'une minute et demie,
Le temps du premier baiser et du premier demi !
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 25 mars 2005 à 20:28
Salut, as-tu regardé du côté de l'opérateur LIKE ? Ca te simplifierait surement la vie.
ex :
if lcase(variabletexte) like "a*" sera vrai pour toutes les variabletexte débutant par "a" ou "A". Etc, on peut combiner les * et les ?.
if variabletexte like "a?c*" sera vrai pour toutes les variables ayant un "a" en 1ère position et un "c" en 3ème position.
chmouette
Messages postés57Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention21 juillet 2005 26 mars 2005 à 16:01
il faudra que j'essaie de remplacer les espaces et les différents
séparateurs pas une *, mais ca ne résoudra pas les problèmes d'erreur
de frappe dans les fichiers à importer...
j'essaie quand même de voir ca mardi au taf...
peut être remplacer les séparateurs par *, et faire une requête en
remplacant un charactère à la fois... ce serait peut être lourd... je
teste, et je poste les résultats...
merci!
On ne devrait vivre qu'une minute et demie,
Le temps du premier baiser et du premier demi !