IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Recherche rapprochement sur une saisie


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut Recherche rapprochement sur une saisie
    Je voudrai savoir si il etait possible lors d'une saisie inexistante que je face une recherche dans ma base de données et que dans un list box s'affiche tout les enregistrement proche de l'enregistrement saisie inexistant.

    Si quelqu'un sait comment faire et qui pourrai me donner une piste pour resoudre mon probleme.

    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 301
    Par défaut
    Salut

    Dans ta requette utilise la clause LIKE

    A+

  3. #3
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    proche du résultat ??
    c'est a adire proche comment ??

  4. #4
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    en fait c'est sur des nom de rue et imagios que la personne se trompe d'une lettre

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut
    Bonjour fixfix,

    Voici une fonction dont je me sert pour "tester" la ressemblance de deux chaines.

    Elle te renvoi un score correspondant à un speudo pourcentage de ressemblance.
    Tu parcours ta base et renvoi le (ou les) résultat(s) ayant le plus grand score.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    '-------------------------------------------------------------------------------------------------------------------------------
    ' Ressemblance de chaines
     
    Public Function Ressemblance(ByVal Chaine1 As String, ByVal Chaine2 As String) As Single
    'Cette fonction renvoi un pourcentage de ressemblance entre deux chaines.
    '
    'Tests effectués :
    '  Tests à 3 et 2 lettres
    '    On compare le Chaine1 avec le Chaine2 puis inversement en prenant que des groupes de lettres
    '  Tests à 1 lettres
    '    On compare les mots lettre par lettre pour les deux possibilites de comparaison
    '    ainsi, si on trouve "tard" dans "tardivement", l'inverse n'est pas vrai
    '
    'Ex : si "picole" et "police" donne un tres bon resultat sur les tests à 1 lettre
    '       le resultat est plus mauvais pour les tests à 2 et 3 lettres
    '
    'Attention :
    'La somme des coef donne 100% (ou 1) : 0.10 + 0.10 + 0.15 + 0.15 + 0.25 + 0.25 = 1
    '-------------------------------------------------------------------------------------
      Chaine1 = LCase(Trim(Chaine1))
      Chaine2 = LCase(Trim(Chaine2))
     
      'Tests avec 3 lettres 20%
      Ressemblance = Ressemblance + (CalcTaux(Chaine1, Chaine2, 3) * 0.1)
      Ressemblance = Ressemblance + (CalcTaux(Chaine2, Chaine1, 3) * 0.1)
     
      'Tests avec 2 lettres 30%
      Ressemblance = Ressemblance + (CalcTaux(Chaine1, Chaine2, 2) * 0.15)
      Ressemblance = Ressemblance + (CalcTaux(Chaine2, Chaine1, 2) * 0.15)
     
      'Tests avec 1 lettre  50%
      Ressemblance = Ressemblance + (CalcTaux(Chaine1, Chaine2, 1) * 0.25)
      Ressemblance = Ressemblance + (CalcTaux(Chaine2, Chaine1, 1) * 0.25)
     
      Ressemblance = Round(Ressemblance, 2)
    End Function
     
    Private Function CalcTaux(ByVal Chaine1 As String, ByVal Chaine2 As String, ByVal Precision As Integer) As Single
    ' Chaine1 et Chaine2 : les chaines a comparer
    ' Precision : nombre de caracteres pour les comparaisons
     
      Dim Cpt     As Integer
      Dim NbOk    As Integer
      Dim NbTests As Integer
      Dim Test    As String
     
      NbOk = 0
      NbTests = 0
      For Cpt = 1 To Len(Chaine2)
        'Test si le morceau de Chaine2 est dans Chaine1
        Test = Mid(Chaine2, Cpt, Precision)
        If Len(Test) = Precision Then
          NbTests = NbTests + 1
          If InStr(Chaine1, Test) <> 0 Then NbOk = NbOk + 1
        End If
      Next
     
      If NbTests = 0 Then
        CalcTaux = 0
      Else
        CalcTaux = (NbOk / NbTests) * 100
      End If
    End Function

  6. #6
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    Voila mon code pour l'instant il me permet de savoir si la rue saisie existe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'CHAMP RUE
    '--------------------------------------------------------------------------------------------
    Result2 = Me.TxtRue
     
    'Execution du RecordSet
    Set rsRue = New ADODB.Recordset
    SQL2 = "Select PREF_NOM +' '+ NOM from GCES_ART_VOIE2 where PREF_NOM +' '+ NOM = '" & Result2 & "';"
    rsRue.Open SQL2, cnx, adOpenKeyset, adLockBatchOptimistic
     
    'Message d'averstissement si enregistrement inconnu
    If rsRue.RecordCount = 0 Then
        Erreur = MsgBox("Le nom de rue est inconnue ou essayer de saisir le nom avant le prenom", vbCritical, "Nom de rue")
    End If
    Mais apres je ne voit pas omment adapter ton code a cette fonction

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/10/2006, 19h46
  2. Recherche globale sur une table
    Par webrider dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2006, 11h41
  3. [Oracle 8i]Recherche doublon sur une même table
    Par fmoriet dans le forum Oracle
    Réponses: 3
    Dernier message: 01/08/2006, 10h09
  4. recherche multicritères sur une requête?
    Par amélie22 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 23/06/2006, 11h25
  5. [Stratégie] attendre un évenement sur une saisie clavier?
    Par ukanoldai dans le forum Général Java
    Réponses: 4
    Dernier message: 28/02/2006, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo