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 avec une collection qui se vide toute seule


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Par défaut Problème avec une collection qui se vide toute seule
    Bonjour,

    J'ai un problème qui me bloque depuis quelques heures. Mon application est développé avec des objets et je dois instancier une collection d'objets à partir de ma bdd. Le soucis c'est qu'aucun message d'erreur ne s'affiche alors que la collection n'est pas correctement instanciée : l'objet (qui lui s'est correctement créé) s'y ajoute bien mais disparait tout de suite après (je suis dans une boucle if quand j'ajoute l'objet dans la collection et j'ai testé; l'objet s'ajoute dans la collection mais dès qu'on sort de cette boucle la collection redevient vide c'est à devenir chèvre )...

    Concernant mon code je l'ai vérifié et revérifier il est bon la collection est bien déclarée etc d'ailleurs ce n'est pas la 1ère collection que je gère dans cette application et les autres fonctionnent très bien donc si quelqu'un avait une idée ou une piste pour savoir d'où cela peut venir... Je ne peut pas vous mettre mon code surtout que c'est de l'objet donc ce serait très long et difficile à comprendre sans avoir la totalité de l'appli sous les yeux.

    Donc voilà je lance un grand appel à l'aide j'ai déjà contacté tous mes potes et même mon prof ne peut pas m'aider, je dois présenter ce programme lundi pour un exam donc ce serait cool que quelqu'un sache un peu m'aiguiller ^^

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Si tu ne peux pas donner de code tu admettras qu'il est très difficile de pouvoir te donner une réponse en l'état

    Si tu ne vides pas la liste explicitement, pourrais-tu comparer la valeur retournée par la méthode GetHashCode de ta liste lorsqu'elle est bien remplie et ensuite lorsqu'elle ne l'est plus ? Histoire de voir s'il s'agit bien de la même liste dans les deux cas.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Par défaut
    Je ne connais pas cette méthode mais j'ai essayer de l'afficher dans une msgbox qui m'a affiché une série de 8 chiffres différents entre le moment où la collection est remplie et le moment ou elle est vide. C'était bien ça qu'il fallait faire?? (code : msgbox(laParcelle.getLesTraitements().GetHashCode()) où laParcelle est mon objet parcelle qui contient la fameuse collection de traitements)

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Si la valeur est différente alors c'est que ton objet, la liste en l'occurrence, n'est pas le même. Reste à trouver pourquoi tu n'as pas les mêmes listes.
    En tout cas ça pourrait expliquer pourquoi tu rencontres ce problème de liste vide, mais sans code difficile d'affirmer quelque chose

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Par défaut
    Je me demande comment c'est possible et d'où le problème peut venir!! Bon c'est bon je lâche mon code en essayant de faire que ce soit clair...

    Ma procédure qui charge les traitements depuis ma bdd et les ajoute dans ma collection :
    (à savoir que TraitementPhytosanitaires est une classe qui a pour classes dérivées TraitementEnChamp et TraitementSemence d'où le if pour savoir de quel type est le traitement...)

    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
     Public Sub chargerTraitements()
            Try
                ' Charge tous les objets traitements et les ajoute à la collection de traitements dans Passerelle
                texteReq = "SELECT * FROM traitement"
                ouvrirConnexion()
     
                maDT.Clear()
                maCom.Connection = connexion
                maCom.CommandText = texteReq
                monDA.SelectCommand = maCom
                monDA.Fill(maDT)
     
                Dim données As MySqlDataReader
                données = maCom.ExecuteReader
     
                While données.Read
                    If données("typeTraitement") = "s" Then
                        Dim dosageTraitementSemence As Integer = données("dosageTraitementSemence")
                        Dim laParcelle As New Parcelle
                        laParcelle = getParcelle(données("idParcelle"))
     
                        Dim leTraitementS As TraitementSemence = New TraitementSemence(données("idTraitement"), données("typeTraitement").ToString(), laParcelle, dosageTraitementSemence)
                        laParcelle.getLesTraitementsPhytosanitaires().Add(leTraitementS)
                    Else
                        Dim datePulv As Date = données("datePulv")
                        Dim dosagePulv As Integer = données("dosagePulv")
                        Dim laParcelle As New Parcelle
                        laParcelle = getParcelle(données("idParcelle"))
     
                        Dim leTraitementC As TraitementEnChamp = New TraitementEnChamp(données("idTraitement"), données("typeTraitement").ToString(), laParcelle, dosagePulv, datePulv)
                        laParcelle.getLesTraitementsPhytosanitaires().Add(leTraitementC)
     
                    End If
                End While
    Le début de ma classe passerelle qui contient la collection de traitements :

    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
    Public Class Parcelle
     
        Private id As Integer
        Private dateSemis As Date
        Private dateRécoltePrévue As Date
        Private surface As Double
        Private lesTraitementsPhytosanitaires As Collection
     
        Public Sub New(ByVal lId As String, ByVal uneDateSemis As Date, ByVal uneDateRécoltePrévue As Date, ByVal uneSurface As Double)
            id = lId
            dateSemis = uneDateSemis
            dateRécoltePrévue = uneDateRécoltePrévue
            surface = uneSurface
            lesTraitementsPhytosanitaires = New Collection
        End Sub
     
     Public Function getLesTraitementsPhytosanitaires() As Collection
            Return lesTraitementsPhytosanitaires
        End Function
    Si vous avez besoin d'autres bouts de codes ou que j'explique certains trucs dites moi...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/04/2013, 18h10
  2. Réponses: 5
    Dernier message: 29/05/2008, 11h05
  3. Problème avec une fonction qui supprime un dossier
    Par Mo_Poly dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2008, 19h39
  4. Réponses: 15
    Dernier message: 31/01/2007, 23h03
  5. Réponses: 6
    Dernier message: 04/09/2006, 16h48

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