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 :

Gestion objet nullable


Sujet :

VB.NET

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Par défaut Gestion objet nullable
    Bonjour,

    Je suis en train de m'arracher les cheveux sur la gestion des objets nullable.

    Pour résumer, je dois remplir un datagridview (c'est une version custom faite par un prestataire y'a 15ans, le remplacer triplerai la quantité de travail, et je n'ai malheureusement pas ce delai)
    Je construis ma datagridviewrow a partir d'une classe "offredeprix" qui contient des proprietés nullable.

    Quand je teste si mon objet nullable a une valeur, via .HasValue, ca passe bien si il y a une valeur, par contre, si c'est a nothing, ca renvoie une erreur.

    extrait de la classe OffreDePrix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class OffreDePrix
    public property Id as string
    Public Property DateSupp As Date?
    end class
    extrait de la fonction qui rempli le datagridview "FlexOffre"
    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
     
    'OdPs est une liste d'OffreDePrix recupéré via entity 
                For Each odp As OffreDePrix In OdPs
                    Dim RowId As Integer = FlexOffre.Rows.Add()
                    Dim Row As DataGridViewRow = FlexOffre.Rows(RowId)
                    Row.Cells(0).Value = odp.CodeSociete
                    '... 
                    Row.Cells(7).Value = IIf(odp.DateDevis.HasValue, odp.DateDevis.Value.ToShortDateString, "") 'Ici le HasValue retourne bien une valeur, mais ca risque de planter pareil que pour DateSupp
                    Row.Cells(8).Value = IIf(odp.DateButoire.HasValue, odp.DateButoire.Value.ToShortDateString, "")
                    Row.Cells(9).Value = odp.CodeCommercial
                    Row.Cells(10).Value = IIf(odp.PrecommandeOK.HasValue, IIf(odp.PrecommandeOK, "X", ""), "")
                    'C'est la que ca plante.
                    Row.Cells(11).Value = IIf(odp.DateSupp.HasValue, odp.DateSupp.Value.ToShortDateString, "")
                    'La DateSupp est potentiellement null
                    Row.Cells(12).Value = odp.Id
                Next
    Edit : avec le message d'erreur c'est encore mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Un objet qui autorise la valeur Null doit posséder une valeur.
    Y a t il une technique pour ne pas lever d'exception lorsqu'une valeur nullable est null?

    Merci de m'avoir lu, pour toute question, je répondrais au plus vite.

    Nasty

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Le test odp.DateDevis Is Nothing au lieu de odp.DateDevis.HasValue n'arrangerait-il pas ton problème ?

    ...

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Par défaut
    Bonjour,

    J'ai fini par faire le test si Odp.DateSupp is nothing, et du coup ca fonctionne.

    Mais je trouvais ca quand meme etonnant que le IIF ne fonctionne pas.

    J'ai fais l'essai avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Row.cells(11).Value = IIF(odp.DateSupp is nothing, "", odp.DateSupp.Value.ToShortDateString)
    et ca continuait de lever une exception.

    Donc ca a fini par donner ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If odp.DateSupp is nothing then
    row.cells(11).value = ""
    else
    row.cells(11).value = odp.DateSupp.Value.ToShortString
    End if

    Au final, j'ai resolu mon probleme, je pense que le simple fait de l'expliquer m'a bien debloqué, mais je ne comprend, du coup, pas l'utilité du HasValue.

    Merci pour ta reponse

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

Discussions similaires

  1. [SAGE X3] Gestion objet spécifique
    Par shyangel dans le forum SAGE
    Réponses: 35
    Dernier message: 10/02/2016, 16h13
  2. Gestion objet dynamique
    Par Naografix dans le forum VB.NET
    Réponses: 4
    Dernier message: 26/12/2013, 09h45
  3. Réponses: 1
    Dernier message: 03/04/2013, 14h39
  4. pour les débutants : discussion sur la gestion objet GTK
    Par Christophe dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 27/09/2011, 18h24
  5. question sur la gestion objet GTK
    Par Christophe dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 16/09/2011, 13h54

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