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

C# Discussion :

Problème avec test valeur DBNull


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Par défaut Problème avec test valeur DBNull
    Bonjour,

    J'ai un petit souci avec des données stockées sous sqlServer lors de l'affectation aux membres d'une class.

    Sous sql server j'ai une table contenant des champs qui peuvent être NULL

    Coté C#, dans mon code, j'utilise un Dataset qui exécute une procédure stockée récupérant les données de la table pour initialiser ma class. Sur les champs Nullables en base, j'ai bien précisé à True la propriété AllowDBNull.


    Or, à l'exécution du bout de code ci-dessous ça plante, il me dit
    throw new global::System.Data.StrongTypingException("La valeur pour la colonne \'compteAttente\' dans la table \'Facture\' est DBNull.", e);
    Idem pour le champs montantTTC (type double)

    (Le code en rouge ne fonctionne pas)
    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
                public List<FactureDao> GetFactureList()
                {
                    _factureDal = new FactureDAL();
                    List<FactureDao> mesFactures = new List<FactureDao>();
                    foreach (var myRow in _factureDal.GetFactureList())
                    {
                        
                        FactureDao maFactureDao = new FactureDao();
                        maFactureDao._id = myRow.idfacture;
                        maFactureDao._numeroFacture = myRow.numfacture;
                        if (myRow.montantTTC == DBNull.Value) //cannot apply operator '==' to operands of type double float etc ..
                            maFactureDao._montantFacture = 0;
                        else
                            maFactureDao._montantFacture = (float)myRow.montantTTC;
    
                        maFactureDao._dateFacture = myRow.dateFacture;
                        maFactureDao._dateSaisie = myRow.dateSaisie;
    
                        //if (DBNull.Value.Equals(myRow.compteAttente.ToString()))
                        //if (string.IsNullOrEmpty(myRow.compteAttente))
                        //if (System.DBNull.Value == myRow.compteAttente)
                        if (myRow.compteAttente is DBNull)
                            maFactureDao.CompteAttente = null;
                        else
                            maFactureDao._compteAttente = myRow.compteAttente;
                        
    
    
                        maFactureDao._information = myRow.info;
                        maFactureDao._statut = myRow.statut;
                        mesFactures.Add((maFactureDao));
                    }
    
                    return mesFactures;
                }
    Je n'arrive pas à trouver le bon format pour tester si la valeur renvoyée est DBNULL.

    Quelqu'un aurait une idée ?

    Merci d'avance

  2. #2
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Hello,

    le designer de datasets fortement typés crée, pour chaque champ ABC, une méthode IsABCNull.

    Ton objet myRow doit donc avoir une méthode IsmontantTTCNull(), que tu peux utiliser.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Par défaut
    Whaoo... tout simplement, ça fonctionne en effet.
    Merci beaucoup.

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

Discussions similaires

  1. problème avec une valeur DWORD
    Par valentinb dans le forum VBA Word
    Réponses: 7
    Dernier message: 16/05/2006, 14h27
  2. [Vb.Net]NumericUpDown et DataBinding : problème avec la valeur min
    Par SamRay1024 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 25/04/2006, 16h34
  3. Problème avec les valeurs par défaut
    Par Steph Ace dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/12/2005, 09h55
  4. Réponses: 6
    Dernier message: 24/10/2005, 20h12
  5. problème avec une valeur decimal
    Par vbcasimir dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2005, 13h52

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