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 :

La référence d'objet n'est pas définie à une instance d'un objet.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 29
    Par défaut La référence d'objet n'est pas définie à une instance d'un objet.
    Bonjours tout le monde,

    je viens de commencer avec c# et je me suis bloqué dans ce morceau de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     public DataRowCollection DatasetToDatarow (DataSet table)
            {
                DataRowCollection dr=null ;     
     
                    for (int i = 0; i < table.Tables[0].Rows.Count; i++)
                    {
                          dr.Add(table.Tables[0].Rows[i]);     
                    }
     
                return dr;  
    }
    lors de la compilation aucun message d'erreur n'est affiché mais lors de l'execution :"

    La référence d'objet n'est pas définie à une instance d'un objet.
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle.

    Détails de l'exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet."

    Votre aide est trés utile pour pouvoir m'avancer dans projet
    Merci d'avance

  2. #2
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Salut.

    Tu n'instancies pas ton DataRowCollection avant d'ajouter des élément dedans (tu appelles la méthode Add sur un objet qui vaut null).

    Bon courage

  3. #3
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Tu n'as pas besoin d'implémenter une méthode pour ça (à moins que te ne veuilles faire autre chose en plus).
    Il te suffit d'accéder à la propriété Rows de la propriété Tables du DataSet pour avoir une DataRowCollection : table.Tables[0].Rows

    Petite remarque supplémentaire par rapport à la signature de ta méthode : (DataSet table). Il ne faut pas confondre un DataSet avec une table, même si c'est la cas la plupart du temps, car un DataSet peut contenir les données de plusieurs tables.

  4. #4
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 29
    Par défaut La référence d'objet n'est pas définie à une instance d'un objet
    Merci tout le monde pour vos reponses;

    SVP eusebe19 je n'ai pas compris votre reponse .
    Est ce que vous pouvez m'aidez un peut plus avec un exemple
    simple ou si c possible de le corriger.

    Skalp merci pour votre reponse et mon but que cette methode
    me retourne un datarow(ou bien un datarowcollection)

    Merci encore une autre fois

  5. #5
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Citation Envoyé par sami_trab Voir le message
    mon but que cette methode me retourne un datarow(ou bien un datarowcollection)
    Voilà une méthode qui répond à ton besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public DataRowCollection DatasetToDatarow(DataSet dataSet)
    {
        return dataSet.Tables[0].Rows;
    }

  6. #6
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 29
    Par défaut
    Merci infiniment Skalp ça marche,

    Mais le problreme c ke j'ai d'autre erreur du meme type voici un autre morceau de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public PartenaireOV[] RecherPart()
            {
                Partenaire Par = new Partenaire(); // classe du projet DataAccess
                PartenaireOV[] ParOV=null; // classe du projet ObjectValue
                BuisnessEntity BuisEnt = new BuisnessEntity();             BusinessComponents BusComp = new BusinessComponents(); //classe ou on a eu la premiere erreur 
     
                    for (int i = 0; i < (BusComp.DatasetToDatarow(Par.GetPartenaire())).Count; i++)
                    {
                        ParOV[i] = BuisEnt.RowToVOPartenaire(BusComp.DatasetToDatarow(Par.GetPartenaire())[i]);
                    }
     
                return ParOV;
            }
    J'ai eu le type d'erreur. Est ce que vous pouvez,SVP, m'expliquer la definition que eusebe19 m'a donnée et comment peut on corriger l'erreur.

    Merci d'avance

  7. #7
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Citation Envoyé par Skalp Voir le message
    Voilà une méthode qui répond à ton besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public DataRowCollection DatasetToDatarow(DataSet dataSet)
    {
        return dataSet.Tables[0].Rows;
    }
    Skalp a réglé ton problème

    Cependant, si tu souhaites que je précise mes propos... tu faisais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DataRowCollection dr = null;              
    // ...
    dr.Add(table.Tables[0].Rows[i]);     
    // ...
    Tu appelais la méthode Add sur ton objet dr qui vaut null. Ce n'est pas possible !

    Pour appeler des méthodes sur un objet, tu dois, au préalable :
    • soit l'instancier via le mot clé new

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<string> myList = new List<string>();
    myList.Add("Hello World");
    • soit l'affecter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataRowCollection dr = dataSet.Tables[0].Rows;
    Voilà

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/09/2007, 10h38
  2. Réponses: 2
    Dernier message: 09/09/2007, 14h25
  3. Réponses: 8
    Dernier message: 04/06/2007, 16h20
  4. Réponses: 24
    Dernier message: 01/06/2007, 09h26
  5. Réponses: 8
    Dernier message: 11/07/2006, 17h27

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