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 :

Datacombo et autocompletion


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 134
    Par défaut Datacombo et autocompletion
    Bonjour, j'ai un petit prb avec un datacombo sur l'evenement (change) ce datacombo et lié a un recordset article qui le remplit correctement avec tte la liste des articles. Je voudrais faire de l'autocompletation de se datacombo mais cela plante dès que je tape une valeur ds la datacombo si je selectionne dans la liste cela fonctionne correctement pourquoi cela ?

    dans le load :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Rst1.MoveFirst
    Set DataCombo2.DataSource = Rst1
    Set DataCombo2.RowSource = Rst1
    DataCombo2.BoundColumn = "id_article"
    DataCombo2.ListField = "reference"
    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
    Private Sub DataCombo2_Change()
        rafraichirchamps2
    End Sub
     
    Private Sub rafraichirchamps2()
        Rst4.Close
        Rst4.Open "SELECT sculfort_article.*, sculfort_fournisseur.* FROM sculfort_article LEFT JOIN sculfort_fournisseur ON  sculfort_article.id_fournisseur=sculfort_fournisseur.id_fournisseur WHERE sculfort_article.id_article =" & DataCombo2.BoundText, cnx, adOpenKeyset, adLockOptimistic
        If Rst4.RecordCount = 0 Then
            MsgBox "vide"
        Else
     
        End If
        If IsNull(Rst4("designation")) Then
            designation.Text = ""
        Else
            designation.Text = Rst4("designation")
        End If
        datecodification.Text = Rst4("date")
        If Rst4("stock") > 0 Then
            Label10.ForeColor = vbGreen
        Else
            Label10.ForeColor = vbBlack
        End If
        Label10.Caption = Rst4("stock")
        If IsNull(Rst1("description")) Then
            description.Text = ""
        Else
            description.Text = Rst4("description")
        End If
        If IsNull(Rst4("prixht")) Then
            prixht.Text = ""
        Else
            prixht.Text = Rst4("prixht")
        End If
        codebarre.Caption = "*" & DataCombo2.Text & "*"
        datecodification.Text = Rst4("date")
        If IsNull(Rst4("id_fournisseur")) Then
            DataCombo1.Text = ""
        Else
            DataCombo1.BoundText = Rst4("id_fournisseur")
        End If
    End Sub
    Le rst1 correspond à l'ensemble des articles et le rst4 correspond à la fiche article.

    Cordialement,
    Corben

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    J'ai un peu modifié la présentation de ton code dans le but d'en améliorer la lecture.

    Une suggestion (toujours dans le même but), tu pourrais mettre le contenu de la requête dans une variable de type String. Ça permettrait de séparer la requête en différentes parties et du même coup éviterait deux incovénients:
    1. Ça éviterait d'avoir une ligne de code très longue qui oblige à faire un défilement vers la droite.
    2. Ça permettrait de disposer la requête dans un bloc indenté plus facile à lire.


    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Dim req As String
    req = "SELECT sculfort_article.*, sculfort_fournisseur.* " & _
          "FROM sculfort_article " & _
          "LEFT JOIN sculfort_fournisseur " & _
          "ON  sculfort_article.id_fournisseur=sculfort_fournisseur.id_fournisseur " & _
          "WHERE sculfort_article.id_article =" & DataCombo2.BoundText
    et quand tu ouvre le RecordSet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rst4.Open req, cnx, adOpenKeyset, adLockOptimistic
    Pour ce qui est de l'origine de ton problème, j'ignore... je n'ai pas utilisé assez souvent le DataCombo. Mais en regardant dans l'explorateur d'objets (F2) les différentes propriétés du DataCombo, j'ai vu qu'il y avait une propriété MatchEntry qui permet de déterminer la manière dont le composant gère la recherche basée sur la saisie du texte faite par l'utilisateur. J'en déduis que si tu essaie de gérer cette recherche par toi-même, il se peut que ton code interfère avec l'action 'naturelle' du contrôle. Ceci étant davantage une présomption de ma part que d'une certitude...

  3. #3
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Et si tu mets la propriété Style à 2, l'autocompletion ne marche pas ?
    As tu besoin d'ajouter des données à cette liste par saisie au clavier ou pas ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 134
    Par défaut
    Merci pour ces conseils

    Je ne fais aucun ajout à la base de données. La saisies ne sert qu'a rechercher un code dans la liste.

    Re je viens de mettre le style à 2 cela ne plante plus mais je ne peux pas saisir de reference dedans.
    Cordialement,
    Corben

  5. #5
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Il faut mettre la propriété MatchEntry à 1 (dblExtendedMatching). J'ai trouvé ça avec le bon vieux F1.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 134
    Par défaut
    Bonjour,
    Merci pour ces réponses.
    Oui, J'avais trouver ca sur le forum style à 1 et matchentry à 1 mais est il possible que la reference soit directement dans la zone de saisie.

    Par exemple :
    si je saisis NP199 qu'il me propose directement la premiere reference possible.
    comme ca il suffit de faire un retour chariot pour valider

    Les references
    NP199001
    NP199002
    NP199003
    NP199004
    NP199005

    Merci bcp

Discussions similaires

  1. [3.2M4] Petits freezes lors de l'autocomplete
    Par Glob dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 28/12/2005, 11h41
  2. AutoComplete un peu spécial
    Par kobe dans le forum Composants VCL
    Réponses: 7
    Dernier message: 21/07/2005, 11h08
  3. Autocompletion de mot dans un trichedit
    Par mteirek_m dans le forum Composants VCL
    Réponses: 3
    Dernier message: 01/06/2005, 20h22
  4. [kdevelop] autocompletion
    Par hiko-seijuro dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 2
    Dernier message: 13/11/2004, 13h57
  5. [Dbgrid] Picklist & Autocomplete ?
    Par dudux dans le forum Bases de données
    Réponses: 7
    Dernier message: 11/07/2004, 10h32

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