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 :

Travailler avec des DBNull et type Nullable [Débutant]


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut Travailler avec des DBNull et type Nullable
    Bonjour à tous,
    Je voudrais pourvoir laisser vide une cellule d'un DataGridView lorsque la donnée (de type Integer) est absente,
    Pour ce faire j'utilise un type Nullable pour stocker ma donnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim IntValue as Integer?
    Pour écrire dans un DataRow je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Row("Macolonne") = IntValue ' Lorsque IntValue est Nothing, j'ai bien une case vide dans mon dgv.
    Pour lire un DataRow je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
       Private Sub DataGridViewCars_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridViewCars.CellValueChanged
         Dim Value As Object
            If IsDBNull(DataGridViewCars.CurrentCell.Value) Then
                Value = Nothing
            Else
                Value = DataGridViewCars.CurrentCell.Value
            End If
    IntValue = CType(Value, Integer?) ' J'obtiens l'erreur : Le cast spécifié n'est pas valide.
    End Sub
    Comment fait t'on pour travailler avec des valeurs Null ? S'il vous plait.

    EDIT : Merci de relire le code j'avais fait une erreur lors de la réecriture.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut
    Arfff, je deviens fou....
    J'ai essayé ceci et je tombe sur un autre problème :

    On est bien d'accord que ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                    Dim IntValue as integer?
                    If Value Is Nothing Then
                         IntValue = Nothing
                    Else
                         IntValue = Integer.Parse(CStr(Value))
                    End If
                    If IntValue .HasValue Then Stop
    est bien égale à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    IntValue  = If(Value Is Nothing, Nothing, Integer.Parse(CStr(Value)))
                    If IntValue.HasValue Then Stop
    Et bien non, dans le premier cas ça fonctionne (le code ne tombe jamais sur Stop) , dans le deuxième cas ça ne fonctionne pas le code s'arrette sur stop à chaque fois que j'efface la valeur du DataGridView (case vide).

    Une idée ? et aussi des conseille ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut
    Bon j'ai fini par trouver une solution qui fonctionne pour ceux que cela interresse :
    Je passe pas en résolu mais vous pouvez toujours intervenir, je suis très intéressé par vos éventuel avis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      <System.Runtime.CompilerServices.Extension> _
        Public Function ToNullable(Of T As Structure)(s As String) As Nullable(Of T)
            Dim result As New Nullable(Of T)()
            Try
                If Not String.IsNullOrEmpty(s) AndAlso s.Trim().Length > 0 Then
                    Dim conv As TypeConverter = TypeDescriptor.GetConverter(GetType(T))
                    result = DirectCast(conv.ConvertFrom(s), T)
                End If
            Catch
            End Try
            Return result
        End Function
    A utiliser comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Int Value as integer? = CStr(Value).ToNullable(Of Integer)()

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

Discussions similaires

  1. Travailler avec des données de type JSON
    Par rambc dans le forum jQuery
    Réponses: 2
    Dernier message: 21/11/2010, 11h38
  2. Réponses: 8
    Dernier message: 09/03/2006, 17h48
  3. Travailler avec des hexadécimaux
    Par LEK dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 18/09/2005, 04h24
  4. Réponses: 3
    Dernier message: 25/01/2005, 11h27
  5. Travailler avec des bits
    Par Vulvulune dans le forum Langage
    Réponses: 5
    Dernier message: 02/03/2003, 19h09

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