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 :

Erreur Mismatch dans une fonction qui rempli une liste déroulante


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Erreur Mismatch dans une fonction qui rempli une liste déroulante
    Bonsoir à tous.

    (d'abord j'ai pris soin de lire les règles donc si je me suis trompé de sujet je suis désolé c'est que j'aurais mal compris).

    Je me suis inscrit dans l'urgence car comme vous vous en doutez j'ai un soucis dans ma programmation.

    Il s'agit de l'erreur Mismatch, qui selon ce que j'ai compris vient des types des données utilisées. C'est dans une fonction qui rempli une liste déroulante à partir d'une base access que se produit l'erreur.

    Je précise que ce même bout de code fonctionne parfaitement bien dans un autre programme partiellement écrit par mes profs, ce qui est le plus frustrant justement.

    au debugage c'est la ligne "Me.list_deroul_client(i, 0) = rs("num_p")" qui est surlignée.

    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
    Function list_client()
        'fonction de remplissage de la liste déroulante
            Dim i As Integer
     
            req = "SELECT client.num_cli, personne.num_p, personne.nom_p FROM client, personne WHERE client.num_cli = personne.num_p"
            Set rs = db.OpenRecordset(req)
            Me.list_deroul_client.ColumnCount = 2
            Me.list_deroul_client.ColumnWidths = "0" & "4000"
     
        i = 0
        rs.MoveFirst
        Do While Not rs.EOF
            Me.list_deroul_client.AddItem
            Me.list_deroul_client(i, 0) = rs("num_p")
            Me.list_deroul_client(i, 1) = Trim(rs("nom_p"))
            rs.MoveNext
            i = i + 1
        Loop
        rs.Close
    End Function
    Dans ma base de donnée, mes clefs primaire étaient toutes de type texte et se présentaient ainsi "cli01", "log01" ... mais j'ai fini par tout mettre en numérique entier "1" "2" ... pensant que ça arrangerai le problème mais ça n'a pas été le cas.

    j'ajoute à cela ma connexion à la base même si je ne pense pas que l'erreur vienne de là.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public db As Database
    Public rs As Recordset
    Public req As String
    Public rep As String
     
    Sub Main()
        'connexion à la base
        Set db = OpenDatabase(App.Path & "\emega2.mdb")
        accueil.Show
    End Sub
    Je sais à l'avance qu'il s'agit d'une erreur stupide comme les autres que j'ai eu à affronter jusque là mais, e suis novice en VB, c'est mon premier projet et toutes les recherches que j'ai effectuées ne m'ont été d'aucune aide.
    Je post donc ici en dernier recours.

    Voilà j'éspère vraiment que l'un d'entre vous pourra m'aider c'est assez urgent puisqu'il s'agit de projet de stage avec date buttoir tout ça.
    En vous remerciant, je reste aux aguets.

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 088
    Points : 16 654
    Points
    16 654
    Par défaut
    Bienvenue sur DVP
    Si tu developpes bien en VB6, quel composant liste utilises-tu ?
    Si tu as pris le composant standard ListBox de la boite a outils, la propriété ColumnWidths, ColumnCount n’existe pas, Me.list_deroul_client(i, 1) ne peut être utilisé pour un ListBox
    Si je ne me suis pas trompé, tu devrais utiliser un composant ListBox standard.
    Pour le remplir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Do While Not rs.EOF
            list_deroul_client.AddItem Trim(rs.Fields("nom_p"))
            list_deroul_client.ItemData = rs.Fields("num_p")
            rs.MoveNext
        Loop
    et comme je supose que tu veux recuperer le Num_p sur un clic de la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Dim NumeroCorrespondant As Integer
    Private Sub list_deroul_client_Click()
    ' pour recuperer le num_p correspondant
    If list_deroul_client.ListIndex <> -1 Then
     NumeroCorrespondant = list_deroul_client.ItemData(list_deroul_client.ListIndex)
     Else
     MsgBox "votre liste est vide"
    End If
    End Sub
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Il s'agit sans doute du composant issus du composant activex fm20
    Les controles fournis par cet activex sont installés par des applications Office, ils n'ont pas été prévu pour VB, et sont particulièrement buggés. De plus ils ne sont pas redistribuables.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 65
    Points : 88
    Points
    88
    Par défaut
    Bonjour,
    ProgElect dit:
    Do While Not rs.EOF
    list_deroul_client.AddItem Trim(rs.Fields("nom_p"))
    list_deroul_client.ItemData = rs.Fields("num_p")
    rs.MoveNext
    Loop
    Mais on peut avoir plus simple sur la même ligne Le num et le nom avec ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    i = 0
    Rs.MoveFirst
    Do While Not Rs.EOF
        list_deroul_client.AddItem Rs("num_p") & "     " & Rs("nom_p")
        Rs.MoveNext
        i = i + 1
    Loop
    Regarger le fichier joint en guise d'exemple
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 10
    Dernier message: 05/02/2015, 14h47
  2. Quitter une fonction qui fait une boucle dans le Thread ?
    Par bboy0303 dans le forum Multithreading
    Réponses: 2
    Dernier message: 25/05/2009, 17h58
  3. [PHP 5.0] Creer une fonction qui retourne une variable dans le script
    Par keaton7 dans le forum Langage
    Réponses: 8
    Dernier message: 10/02/2009, 14h09
  4. Changer une fonction qui utilise une liste par un tableau!
    Par sara21 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/05/2007, 13h18
  5. Réponses: 15
    Dernier message: 26/03/2006, 12h10

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