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 :

Tester si un objet existe [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Par défaut Tester si un objet existe
    Bonjour,

    Pour simplifier, j'ai une classe avec plusieurs Property dedans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Class BatchData
         ...
         Public Property MarkCorrection As Integer
         Public Property GridCorrection As String
         ...
    End Class

    Dans mon code principal, j'instancie cette classe et je lui assigne ou non des valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim bd as new BatchData()
    bd.MarkCorrection = 1

    Après j'ai une classe qui me permet de récupérer ces valeurs et les stocker dans une BDD mais la ça bloque :

    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
    Public Sub InsertBatchData(ByVal pExpID As Integer, ByRef pBatchData As BatchData)
          Try
                Dim insertBatchData As SqlCommand = New SqlCommand("InsertBatchData")
     
                With insertBatchData.Parameters
                      .Add(New SqlParameter("@markCorrec", SqlDbType.Int))
                      .Add(New SqlParameter("@gridCorrec", SqlDbType.VarChar))
                End With
     
                With insertBatchData                        
                      .Parameters("@markCorrec").Value = IIf(pBatchData.NumberOfMarksNY.ToString Is Nothing, DBNull.Value, pBatchData.NumberOfMarksNY)
                      .Parameters("@gridCorrec").Value = IIf(pBatchData.WaferGridCorrection.ToString Is Nothing, DBNull.Value, pBatchData.WaferGridCorrection.ToString)
                End With
     
                ExecuteRequest.NonQueryStoredProcedure(insertBatchData)
     
                Catch ex As Exception
                      Console.WriteLine("Erreur Table Batch Data : " & ex.Message)
                End Try
     
    End Sub
    Le problème c'est que je n'ai pas assignée de valeur à GridCorrection et il est nul. Du coup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIf(pBatchData.WaferGridCorrection.ToString Is Nothing, DBNull.Value, pBatchData.WaferGridCorrection.ToString)
    lève l'exception :
    La référence d'objet n'est pas définie à une instance d'un objet
    Ma question est : Comment je peux savoir si l'objet est instancié ?

    Merci d'avance

    Jah

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Si WaferGridCorrection est nul (Nothing), l'appel à ToString provoque l'exception. Il ne fait pas tester le résultat de ToString (qui de toute façon ne renvoie jamais null), mais la valeur de la propriété elle-même : pBatchData.WaferGridCorrection Is Nothing.

    Pour NumberOfMarksNY, inutile de tester, car Integer est un type valeur, et ne vaut donc jamais null

  3. #3
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Par défaut
    Bonjour Tomlev et merci pour ta réponse,

    Je vais corriger ca pour les Integer

    Pour IIf(pBatchData.WaferGridCorrection Is Nothing, DBNull.Value, pBatchData.WaferGridCorrection.ToString)
    , malheuresement ca ne fonctionne pas :

    Nom : excep.png
Affichages : 1265
Taille : 36,5 Ko

    EDIT : Voici l'état de WaferGridCorrection au moment où je fais If

    Nom : obj.png
Affichages : 1220
Taille : 3,6 Ko

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Utilise If à la place de IIf.

    IIf est une fonction, donc les deux arguments sont évalués avant que ça puisse renvoyer un résultat, donc pBatchData.WaferGridCorrection.ToString est évalué même si pBatchData.WaferGridCorrection est nul, d'où l'erreur.
    If, en revanche, est un opérateur, pas une fonction, et il n'évalue que la partie qui correspond au test (donc pBatchData.WaferGridCorrection.ToString n'est évalué que si pBatchData.WaferGridCorrection Is Nothing renvoie False.

    Soit dit en passant, tu n'as pas besoin d'appeler ToString sur WaferGridCorrection, puisque c'est déjà de type String...

  5. #5
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Par défaut
    Merci tomlev pour tes explications claires et précises

    Je corrige mes erreurs et je clos le sujet

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

Discussions similaires

  1. [XL-2010] Tester si objet existe dans ma collection
    Par bastou93 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/07/2011, 09h00
  2. changer la couleur d'un objet existant
    Par Mandalar dans le forum Tkinter
    Réponses: 4
    Dernier message: 02/03/2005, 21h09
  3. [Ada] Récupérer un pointeur sur un objet existant
    Par vincnet500 dans le forum Ada
    Réponses: 1
    Dernier message: 14/11/2004, 14h26
  4. Comment tester qu'un objet String est bien initialisé
    Par Jones dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 17/09/2004, 11h29
  5. [langage] tester si un fichier existe
    Par schnecke dans le forum Langage
    Réponses: 3
    Dernier message: 02/03/2004, 11h24

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