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 référence d'objet [Débutant]


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 79
    Points : 41
    Points
    41
    Par défaut Problème de référence d'objet
    Bonjour,

    Je n'arrive pas à comprendre d'ou vient mon erreur car je pense que j'ai bien tout déclaré. 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
    Private Sub chkboxProprietaire_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkboxProprietaire.CheckedChanged
            If chkboxProprietaire.Checked = True Then
                Dim CmdTestRemarques As New SqlCommand("SELECT idVP, modeleVP + ' ' + libelleVP as InfosVP FROM VP WHERE remarqueVP <> ''", MaConnexion)
                Dim Mavar As Integer = 0
                MaConnexion.Open()
                Mavar = CmdTestRemarques.ExecuteScalar
                MaConnexion.Close()
                MsgBox(Mavar)
     
                If Mavar > 0 Then
                    lstVP.DataSource = Nothing
                    lstVP.Items.Clear()
                    Dim CmdSelectVP As New SqlCommand("SELECT idVP, modeleVP + ' ' + libelleVP as InfosVP FROM VP WHERE remarqueVP <> ''", MaConnexion)
     
     
                    lstVP.DataSource = Nothing
                    lstVP.Items.Clear()
                    Dim dtVP As New DataTable()
                    Dim daTableVP As New SqlDataAdapter(CmdSelectVP)
     
                    'Listbox Voile Principale
                    daTableVP.Fill(dtVP)
                    lstVP.DataSource = dtVP
                    lstVP.DisplayMember = "infosVP"
                    lstVP.ValueMember = "idVP"
     
     
                Else
                    MessageBox.Show("Aucune remarque sur les VP", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
     
            Else
                Dim CmdSelectVP2 As New SqlCommand("SELECT idVP, modeleVP + ' ' + libelleVP as InfosVP FROM VP", MaConnexion)
     
     
                lstVP.DataSource = Nothing
                lstVP.Items.Clear()
     
                Dim dtVP As New DataTable()
                Dim daTableVP As New SqlDataAdapter(CmdSelectVP2)
     
                'Listbox Voile Principale
                daTableVP.Fill(dtVP)
                lstVP.DataSource = dtVP
                lstVP.DisplayMember = "infosVP"
                lstVP.ValueMember = "idVP"
     
     
            End If
     
     
        End Sub
    et voici le code de ma listbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub lstVP_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstVP.SelectedIndexChanged
     
     
            If lstVP.SelectedValue.ToString <> "System.Data.DataRowView" And lstVP.SelectedValue.ToString <> "" Then
                Dim CmdSelectInfosVP As New SqlCommand("SELECT modeleVP, libelleVP, surface, remarqueVP FROM VP Where idVP = " & lstVP.SelectedValue & "", MaConnexion)
                MaConnexion.Open()
                Dim CurseurSelectInfosVP As SqlDataReader = CmdSelectInfosVP.ExecuteReader
                While CurseurSelectInfosVP.Read
                    txtModele.Text = CurseurSelectInfosVP.GetString(0)
                    txtLibelle.Text = CurseurSelectInfosVP.GetString(1)
                    txtSurface.Text = CurseurSelectInfosVP.GetValue(2)
                    txtRemarques.Text = CurseurSelectInfosVP.GetString(3)
                End While
                MaConnexion.Close()

    Mon erreur arrive à Listbox_SelectedIndexChanged, lorsque je change le statut de ma checkbox et j'obtiens le message suivant :

    La référence d'objet n'est pas définie à une instance d'un objet.

    Quelqu'un pourrait il me dire d'ou provient mon erreur ? car j'ai bien utilisé les mots new et j'ai bien détruit les autres elements avant d'utiliser les mêmes (lstVP.datasource = nothing et lstVP.items.clear())


    Cordialement

  2. #2
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    Bonjour,

    Quelle ligne déclenche cette erreur ?
    Il faudrait peut être que tu testes si ton lstVP.SelectedValue n'est pas null...

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Bonjour,

    suffit de regarder quelle ligne plante déjà

    Je suppose que c'est lstVP.SelectedValue.ToString.
    Si lstVP.SelectedValue = Nothing tu ne peux pas faire un ToString dessus.
    Si l'erreur vien bien de là, il suffit de rajouter en condition : Not lstVP.SelectedValue is Nothing andalso.

    EDIT : Devancé, même intuition
    Le Porc est un loup pour le Porc.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 79
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    Je viens de rajouter la condition And lstVP.SelectedValue IsNot Nothing, et à priori cela fonctionne, mais maintenant lorsque je clique sur la checkbox, en pas a pas je vois bien que toutes les étapes se déroulent correctement mais après ça ne passe plus jamais par l'évènement IndexChanged et la liste n'est pas mise à jour, meme quand je change d'item manuellement celà ne fait rien....

    J'ai toujours la même erreur...

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Le contrôle sur Nothing est à ajouter en premier contrôle, car sinon tu vas d'abord faire un ToString et planter avant de vérifer que ton objet n'est pas à Nothing ...
    Ensuite tu dois utiliser un AndAlso pour la condition suivante, ça permet de spécifier que si la première condition est fausse, tu ne vas pas vérifier la suivante, tu sors directement du IF. (Le Orelse fait l'inverse, si ta première condition est bonne, il ne s'embête pas à vérifier les autres, il rentre directement)

    Pour ton problème, as-tu mis un point d'arrêt sur la sub SelectedIndexChange ?
    Le Porc est un loup pour le Porc.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 79
    Points : 41
    Points
    41
    Par défaut
    Lorsque j’exécute en pas à pas, le programme passe par lstVP.datasource = nothing, il passe aussitôt par selectindexChanged.... donc d'un sens logique car il ne vide pas les items et n'execute pas la requete pour remplir les nouveaux items...

    Je en comprends vraiment pas

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 79
    Points : 41
    Points
    41
    Par défaut
    J'avais mal positionné mon AndAlso, je ne connaissais pas cette condition, cela fonctionne à merveille maintenant, je te remercie, ccela va beaucoup m'aider dans mon développement


    Un énorme merci à toi !

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Pas de soucis, le AndAlso et le OrElse sont vraiment très importants, c'est le genre d'erreur qu'on fait tous au début car on ne sait pas forcément.
    D'ailleurs il me semble qu'en C# le And et le Or fonctionnent comme un AndAlso et un OrElse, à confirmer.

    Bonne continuation
    Le Porc est un loup pour le Porc.

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

Discussions similaires

  1. [LibreOffice][Tableur] Problème de référence objet
    Par madvic dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 17/10/2014, 09h19
  2. [C#] Problème référence d'objet
    Par Jarell dans le forum Débuter
    Réponses: 8
    Dernier message: 13/06/2013, 09h45
  3. Problème de référence objet en C#
    Par _yann dans le forum Visual Studio
    Réponses: 1
    Dernier message: 02/01/2013, 10h12
  4. [Débutant] problème référence d'objet est requise pour NavigationService
    Par Veidt dans le forum Windows Phone
    Réponses: 2
    Dernier message: 11/08/2012, 00h13
  5. problème de références _ptr dans une map STL
    Par Mr_Tyu dans le forum CORBA
    Réponses: 1
    Dernier message: 10/08/2004, 10h39

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