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 :

Impossible d'effectuer un cast d'un objet de type "system.DBNull" [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de solaar
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 607
    Par défaut Impossible d'effectuer un cast d'un objet de type "system.DBNull"
    Bonjour,
    j'ai une erreur dans mon datagrid;
    impossible d'effectuer un cast d'un objet de type "system.DBNull" en type "system.string".....
    je vous présente 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
     
           //Infos Fournisseurs ou Prestataires
                    var listInfosCheque = tab_ChequeTableAdapter.GetDataByTousChequesPrestFourn(clVariableGlobale._codeSocieteActif, clVariableGlobale._codeEtablissementActif);
                    foreach(var infos in listInfosCheque)
                    {
                        if (tbNumeroCheq.Text == infos.Numero_Cheque.ToString())
                        {
     
                            //infos Fournisseur                    
                            if (Convert.IsDBNull(infos.Code_Fournisseur))
                            {
                                Tab_Cheque _cheq = new Tab_Cheque();
                                {
                                    _cheq.Code_Fournisseur = "";                         
                                }                          
                                db.SaveChanges();                            
                            }                  
     
                                tbNom.Text = clMethodes.GetInfosNomFour(db, infos.Code_Fournisseur);
                                if (infos.NumPrestataire != 0)
                                {
                                    //Infos Prestataire
                                    string[] tableau = clMethodes.GetInfosNomPrenomPrest(db, infos.NumPrestataire);
                                    tbNom.Text = tableau[0].ToString();
                                    tbPrenom.Text = tableau[1].ToString();
                                }         
                        }
     
                    }
    cordialement
    solaar

  2. #2
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Par défaut
    Bonjour,

    je suppose que c'est sur ce bout de code le bug :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (Convert.IsDBNull(infos.Code_Fournisseur))
                            {
                                Tab_Cheque _cheq = new Tab_Cheque();
                                {
                                    _cheq.Code_Fournisseur = "";                         
                                }                          
                                db.SaveChanges();                            
                            }
    Qu’essaye tu de faire ici? De vérifier si code_fournisseur à une valeur?

    Si c'est ça tu peux faire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (string.IsNullOrEmpty(infos.Code_Fournisseur))
                            {
                                Tab_Cheque _cheq = new Tab_Cheque();
                                {
                                    _cheq.Code_Fournisseur = "";                         
                                }                          
                                db.SaveChanges();                            
                            }

    Sans plus de détails, je ne pourrais pas t'aider plus.

    Cordialement.

  3. #3
    Membre éclairé Avatar de solaar
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 607
    Par défaut
    Non rien n'a changé !
    Aussi je rappel que Null est différent de DBNull.

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Tu peux essayer avec :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    if(infos.Code_Fournisseur == DBNull.Value)
    Mais c'est quand même bizarre d'avoir à faire ça, il y a peut-être un souci de conception du côté de ta couche d'accès aux données. On s'attendrait plutôt à tomber sur une propriété de type int ou string par exemple, pas sur un type DBNull.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Par défaut
    Bonjour,

    en lisant cette aide, j'ai l'impression que DBNull n'est pas une valeur utilisable mais un outille de test.

    J'utiliserais quelque chose dans le genre pour convertir la valeur en string.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DBNull.Value.Equals(infos.Code_Fournisseur) ? "": infos.Code_Fournisseur.ToString();

  6. #6
    Membre éclairé Avatar de solaar
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 607
    Par défaut
    Je vous montre une image de l'erreur a chaque click sur la ligne de la cellule.
    Images attachées Images attachées  

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/09/2014, 22h12
  2. Réponses: 4
    Dernier message: 10/05/2011, 11h55
  3. Réponses: 7
    Dernier message: 26/04/2011, 18h00
  4. Réponses: 0
    Dernier message: 13/03/2010, 10h25
  5. Réponses: 2
    Dernier message: 06/03/2007, 19h38

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