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.NET Discussion :

Problème de donnée qui s'affiche puis disparais instantanément


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut Problème de donnée qui s'affiche puis disparais instantanément
    Bonjour voila, j'ai un code qui à partir de deux tables charge deux combobox différentes, soit une par table à partir de bindingsource.
    Lorsque je fais appel pour la première fois au code, il n'y a aucun problème tout se charge et apparait, mais si je lance une deuxième fois mon code alors là j'ai le premier combobox qui se charge sans aucun problème, mais pour le deuxième c'est mystère et boule de gomme. En effet le combobox se charge bien, pusique je vois la première ligne qui s'affiche, mais à peine ais-je eut le temps de la voir s'afficher que tout redevient blanc et quand je déroule mon combobox, je vois bien qu'il a été chargé puisque plusieurs lignes apparaissent, mais elle sont toutes blanches comme si les valeurs étaients a null, mais par contre impossible de sélectionner une ligne.

    Est-ce un bug de vb.net ??? ou me manque t'il quelque chose dans mon code ???
    Franchement je sais pas trop quoi faire fasse à ce problème assez déconcertant, puisque comme je vous le dit, si j'utilise le code une fois tout fonctionne nikel

    voici mon code :
    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
    64
    65
     
            'on indique la requête à éxécuter
            strSql = "SELECT NumBeneficiaire, NomBeneficiaire, PrenomBeneficiaire, " & _
                     "AdresseBeneficiaire + CAST(CPBeneficiaire AS varchar(5)) + VilleBeneficiaire as ligne_adresse_Bene, " & _
                     "TelephoneBeneficiaire, Portablebeneficiaire " & _
                     "From BENEFICIAIRES"
     
            'Dim strSql1 As String = "Select  NumInt, NomInt, PrenomInt, VilleInt, TelFixeInt, TelPortInt from INTERVENANTE"
            Dim strSql1 As String = "Select * from INTERVENANTE"
     
            'on indique la table 
            table = "INTERVENANTE"
            table1 = "BENEFICIAIRE"
     
            'on vide le dataset
            ObjetDataSet.Clear()
            ObjetDataSet1.Clear()
     
            'on éxécute la fonction pour se connecter à la base et éxécuter la requête
            BD.ExecReq(strSql, table, ObjetDataSet)
            BD.ExecReq(strSql1, table1, ObjetDataSet1)
     
            ObjetDataTable.Clear()
            ObjetDatatable1.Clear()
     
            'On crèe une datatable à partir du dataset
            ObjetDataTable = ObjetDataSet.Tables(table)
            ObjetDatatable1 = ObjetDataSet1.Tables(table1)
     
     
            'Dim nbligne As Integer = ObjetDataTable.Rows.Count
            'Dim nbligne1 As Integer = ObjetDatatable1.Rows.Count
     
            ' on lie le bindingsource à l'objet datatable
            BSIntervenante.DataSource = ObjetDatatable1
            BSBeneMission.DataSource = ObjetDataTable
     
            'on affecte les données au objets visuel
            'on remplie la combobox
            CMBNomREchInt.DataSource = BSIntervenante
            CMBNomREchInt.ValueMember = "NumInt"
            CMBNomREchInt.DisplayMember = "NomInt"
            'et on remplie tous les textbox
            LBLPrenomRechInt.DataBindings.Clear()
            LBLPrenomRechInt.DataBindings.Add(New System.Windows.Forms.Binding("Text", BSIntervenante, "PrenomInt", True))
            LBLVilleRechInt.DataBindings.Clear()
            LBLVilleRechInt.DataBindings.Add(New System.Windows.Forms.Binding("Text", BSIntervenante, "VilleInt", True))
            LBLFixeRechInt.DataBindings.Clear()
            LBLFixeRechInt.DataBindings.Add(New System.Windows.Forms.Binding("Text", BSIntervenante, "TelFixeInt", True))
            LBLPortRechInt.DataBindings.Clear()
            LBLPortRechInt.DataBindings.Add(New System.Windows.Forms.Binding("Text", BSIntervenante, "TelPortInt", True))
     
            'on remplie la combobox
            CMBNomRechBene.DataSource = BSBeneMission
            CMBNomRechBene.ValueMember = "NumBeneficiaire"
            CMBNomRechBene.DisplayMember = "NomBeneficiaire"
            'et on remplie tous les textbox
            LBLPrenomRechBene.DataBindings.Clear()
            LBLPrenomRechBene.DataBindings.Add(New System.Windows.Forms.Binding("Text", BSBeneMission, "PrenomBeneficiaire", True))
            LBLAdrRechBene.DataBindings.Clear()
            LBLAdrRechBene.DataBindings.Add(New System.Windows.Forms.Binding("Text", BSBeneMission, "ligne_adresse_Bene", True))
            LBLFixeRechBene.DataBindings.Clear()
            LBLFixeRechBene.DataBindings.Add(New System.Windows.Forms.Binding("Text", BSBeneMission, "TelephoneBeneficiaire", True))
            LBLPortRechBene.DataBindings.Clear()
            LBLPortRechBene.DataBindings.Add(New System.Windows.Forms.Binding("Text", BSBeneMission, "PortableBeneficiaire", True))

    d'avance merci

    @++
    dubidon

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    Il n'y a personne qui pourrait m'aider ??

    @++
    dubidon

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 344
    Points : 291
    Points
    291
    Par défaut
    Comment est configurée ta ComboBox.
    - la propriété Sorted est-elle à TRUE.
    - utilise tu les méthodes BeginUpdate et EndUpdate pour actualiser le contenu de ta combobox.

    J'ai rencontré un problème similaire avec ce contrôle. Il arrivait lorsque les conditions précédentes était réunies .... mystère

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    Sorted est a false et pour beginupdate et endupdate je n'ai pas rencontré ces propriétés du cou je peut pas trop te répondre, mais en tout cas je n'ai pas fait appel à ces propriétés.

    @++
    dubidon

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    Personne n'aurait une autre idée ??? je bloque vraiment là et c'est assez embétant pour mon programme

    @++
    dubidon

  6. #6
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Fais le binding au debut une fois pour toutes, avant meme la connection. Ne refais pas les bindings a chaque connection.

    A mon avis, le fait de detruire/reconstruire le binding ne raffraichit pas le contenu des controles en fonction des donnees

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    Je comprends pas trop ce que tu veux dire, si je fais le binding au début comme tu dit, cela veut dire que j'aurais pas attribué de datatable à mon bindingsource, du cou je pourrais pas avoir de donné, a moins que je n'ai pas du tout compris ce que tu voulais dire.

    Pour la reconstruction a chaque fois, je n'ai pas trouvé comment rafraichir les données si il y a une maj entre temps, du cou j'ai utilisé la méthode du je refais tout à chaque fois et c'est justement là ou çà plante, et tout à l'heure par exemple si je lançais une fois, çà focntionnait, si je lançais 2 fois j'avais qu'uns eul combo de remplie et si je lançais 3 fois y'avais les deux de remplie, mais après plus qu'un seul.

    @++
    dubidon

  8. #8
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Bindings = relier une donnee a un controle

    Ce genre de choses:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            LBLPrenomRechInt.DataBindings.Clear()
            LBLPrenomRechInt.DataBindings.Add(New System.Windows.Forms.Binding("Text", BSIntervenante, "PrenomInt", True))

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    bah si je fais comme tu me dit, j'obtiens un beau message d'erreur :

    "Impossible d'effectuer une liaison à la propriété ou la colonne"

    du coup faut bien y mettre après avoir indiquer a mon bindingsource le datatable approprié

    @++
    dubidon

  10. #10
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    C'est qu'il y a plusieurs choses a bien ordonner. (si tu fais le binding a un copntrole dans le concepteur de la form, regarde ou visual studio met le code)

    Fais un test, mets une pause au debut du code
    Lance le code une fois (tout se passe bien)
    Lance le code une seconde fois et a la pause mets en commentaire toutes les associations de controles a la source de donnee.
    Ca devrait marcher

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    Lance le code une fois (tout se passe bien)
    Lance le code une seconde fois et a la pause mets en commentaire toutes les associations de controles a la source de donnee.
    Ca devrait marcher
    Alors sje viens de tester comme tu m'as dit, et c'est vrai que j'ai aucun problème en relançant le code deux fois de suite, du cou j'ai mis un test avec un if pour vérifier si mes combobox contiennent déja des données ou non.

    Par contre sur ma forme ou j'ai mes combobox, j'ai un bouton qui fait appel à une fonction qui est tout autre et qui récupère juste les valeurs de mes combobox et dès que je fais appel à cette fonction et bien j'ai le même problème, une de mes combobox a son continue qui devient blanc alors que je ne refais pas du tout appel au code de chargement de mes comboxbox.

    Il doit y avoir un lien entre tous ces bugs puisqu'il touche toujours le même contrôle mais je ne vois aps du tout lequel çà pourrait être

    encore merci pour les pistes d'aides que tu me donnes

    @++
    dubidon

  12. #12
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Essaie de trouver un evenement des controles relies aux donnees qui se declanche quand la liste redevient blanche (TextChanged?)
    Mets un point d'arret et observe la pile des appels, debugge au pas-a-pas. Tu trouvera

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    Bon ben après des heures de déboggage et de recherche j'avance petit à petit, j'ai remarqué que si j'inverse l'ordre de remplissage de mes combobox et bien la combobox qui subit le problème mystérieux d'effacement des données est inversé aussi.
    En gros la première combobox remplie fonctionne niquel mais la deuxième subit la pression de forces obscurs
    Mais à part çà j'ai rien trouvé d'anormal dans l'étude de mes variables.
    C'est vraiment bizarre quand même

    @++
    dubidon

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    bon j'ai fais des tests sur une autre form, mais j'ai quelques souci.

    j'ai donc essayé de faire sans taper de code ce que je voulais, juste en utilisant les outils de visual basic, mais là dans mes combobx, j'ai le message "System.Data.DataRowView". De plus j'ai remarqué qu'il se bindait directement au dataset , mais du coup je sais pas comment faire pour que mes label évolue aussi en fonction de la ligne choisi dans le combobox.

    Quelqu'un aurait d'autres idées s'il vous plait ???

    @++

    ps: aidez un pauvre débutant en vb.net qui galère sur quelque chose qui le dépasse

  15. #15
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Tu mets un textbox sans bordure en readonly

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    Si je comprends bien tu me dis de remplacer mes labels par un textbox sans bordure, mais en l'occurrence çà ne changera rien puisqu'il faudrait que je bind mes textbox aussi et j'aurais le même problème pour l'évolution de mes textbox en fonction de mes combobox.

    Je vais tenter de créer un nouveau projet et de faire le même style de chose pour voir ce que çà donne

    @++
    dubidon

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    bon ben j'essaie d'avancer un peu et du coup j'ai voulu faire une petite modif dans mon code pour pouvoir charger ma deuxième combobox seulement en fonction du choix de ma première combo. Cependant j'ai modifié ma requête pour que cela fonctionne mais je n'ai aucun retour en vb.net alors que sous sql server la requête me renvoie bien des données, bref je comprend pas très bien là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    strSql = "SELECT NumBeneficiaire, NomBeneficiaire, PrenomBeneficiaire, " & _
                     "AdresseBeneficiaire + CAST(CPBeneficiaire AS varchar(5)) + VilleBeneficiaire as ligne_adresse_Bene, " & _
                     "TelephoneBeneficiaire, Portablebeneficiaire " & _
                     "From BENEFICIAIRES " & _
                     "WHERE NumBeneficiaire IN  (SELECT NumBeneficiaire FROM ORDRE_MISSION " & _
                     "WHERE NumInt = " & CMBNomHInt.SelectedIndex & "  )"

    De plus j'ai voulu faire le chargement de ma deuxième combobox lorsque la première a subi un changement de ligne, mais rien qu'au chargement de la première alors qu'ils y a 12 lignes, la deuxieme se charge 3 fois et je ne sais pas pourquoi

    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
     
    Private Sub CMBNomHInt_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMBNomHInt.SelectedIndexChanged
            strSql = "SELECT NumBeneficiaire, NomBeneficiaire, PrenomBeneficiaire, " & _
                     "AdresseBeneficiaire + CAST(CPBeneficiaire AS varchar(5)) + VilleBeneficiaire as ligne_adresse_Bene, " & _
                     "TelephoneBeneficiaire, Portablebeneficiaire " & _
                     "From BENEFICIAIRES " & _
                     "WHERE NumBeneficiaire IN  (SELECT NumBeneficiaire FROM ORDRE_MISSION " & _
                     "WHERE NumInt = " & CMBNomHInt.SelectedIndex & "  )"
     
     
     
            'on indique la table 
            table = "BENEFICIAIRE"
     
            'on vide le dataset
            ObjetDataSet.Clear()
     
     
            'on éxécute la fonction pour se connecter à la base et éxécuter la requête
            BD.ExecReq(strSql, table, ObjetDataSet)
     
            'on efface le datatable
            ObjetDataTable.Clear()
     
     
            'On crèe une datatable à partir du dataset
            ObjetDataTable = ObjetDataSet.Tables(table)
            BSBeneMission.DataSource = ObjetDataTable
     
            'on remplie la combobox
            CMBNomHBene.DataSource = BSBeneMission
            CMBNomHBene.ValueMember = "NumBeneficiaire"
            CMBNomHBene.DisplayMember = "NomBeneficiaire"
            'et on remplie tous les textbox
            LBLPrenomHBene.DataBindings.Clear()
            LBLPrenomHBene.DataBindings.Add(New System.Windows.Forms.Binding("Text", BSBeneMission, "PrenomBeneficiaire", True))
            LBLAdresseHBene.DataBindings.Clear()
            LBLAdresseHBene.DataBindings.Add(New System.Windows.Forms.Binding("Text", BSBeneMission, "ligne_adresse_Bene", True))
            LBLFixeHBene.DataBindings.Clear()
            LBLFixeHBene.DataBindings.Add(New System.Windows.Forms.Binding("Text", BSBeneMission, "TelephoneBeneficiaire", True))
            LBLPortHBene.DataBindings.Clear()
            LBLPortHBene.DataBindings.Add(New System.Windows.Forms.Binding("Text", BSBeneMission, "PortableBeneficiaire", True))
     
            datagridvue.DataSource = BSBeneMission
     
        End Sub

    si quelqu'un a des idées pour faire avancer mon schmilblic çà m'arrangerait beaucoup car j'vais bientôt devenir chauve

    @++
    dubidon

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    n'y a t'il vraiment personne pour m'aider ??

    @++
    dubidon

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/01/2010, 16h43
  2. problème liste déroulante qui n'affiche rien
    Par edonist dans le forum IHM
    Réponses: 5
    Dernier message: 28/08/2008, 21h09
  3. Réponses: 3
    Dernier message: 30/07/2008, 15h52
  4. [MySQL] Base de donnée qui n'affiche rien
    Par Prince Mch dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 31/01/2008, 16h36
  5. Réponses: 2
    Dernier message: 23/07/2007, 06h14

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