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

Windows Forms Discussion :

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


Sujet :

Windows Forms

  1. #1
    Invité
    Invité(e)
    Par défaut System.NullReferenceException : 'La référence d'objet n'est pas définie à une instance d'un objet.'
    Bonjour,

    J'ai une probleme que je ne pouvais pas trouver une solution. Pouviez vous m'aider? Merci.


    System.NullReferenceException*: 'La référence d'objet n'est pas définie à une instance d'un objet.' da a été null.

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    using System;
    using System.Data;
    using System.Data.OleDb;
    using System.Windows.Forms;
     
    namespace DataGridviewControl
    {
        public partial class Form1 : Form
        {
            OleDbCommand cmd;
            OleDbDataAdapter da;
            OleDbCommandBuilder cmdb;
            DataSet ds;
            DataTable dt;
     
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=OdsDatabase.accdb");
                OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM dictionary", conn);
                DataSet ds = new DataSet();
                conn.Open();
                da.Fill(ds, "dictionary");
                dt = ds.Tables["Dictionary"];
                conn.Close();
                dataGridView1.DataSource = ds.Tables["dictionary"];
                dataGridView1.ReadOnly = true;
                save_btn.Enabled = false;
                dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            }
     
            private void new_btn_Click(object sender, EventArgs e)
            {
                dataGridView1.ReadOnly = false;
                save_btn.Enabled = true;
                new_btn.Enabled = false;
                delete_btn.Enabled = false;
            }
     
            private void delete_btn_Click(object sender, EventArgs e)
            {
                if (MessageBox.Show("Do you want to delete this row?","Delete",MessageBoxButtons.YesNo)==DialogResult.Yes)
                {
                    dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
                    da.Update(dt);
                }
            }
     
            private void save_btn_Click(object sender, EventArgs e)
            {
                da.Update(dt);
                dataGridView1.ReadOnly = true;
                save_btn.Enabled = false;
                new_btn.Enabled = true;
                delete_btn.Enabled = true;
            }
        }
    }
    Dernière modification par rv26t ; 04/11/2017 à 13h34. Motif: Merci d'utiliser les balises de code (bouton #)

  2. #2
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Bonjour ,

    C'est typiquement le type d'erreur qui s'identifie a l'aide du débugger .Tu tentes d'acceder a un membre/méthodes/etc d'un objet qui est null , ce qui cause cette exception.

    Bon code.

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 749
    Points : 5 453
    Points
    5 453
    Par défaut
    A mon avis ton problème vient de cette ligne là :
    OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM dictionary", conn);

    En gros tu déclare en local un autre OleDbDataAdapter nommé "da" au lieu d'utiliser celui de ta Form.
    Ce qui fait que le "da" de ta Form n'est jamais initialisé.

    Après, tu vas avoir d'autres problèmes, comme le fait que tu doivent cliquer sur un bouton pour initialiser "da" et cliquer sur un autre pour l'utiliser

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    J'ai pris une erreur comme ça quand j'essaye effacer où enregistrer un row.

    System.Data.OleDb.OleDbException*: 'Erreur de syntaxe dans l'expression «*((_id = ?) AND ((? = 1 AND word IS NULL) OR (word = ?)) AND ((? = 1 AND wordtype IS NULL) OR (wordtype = ?)) AND ((? = 1 AND deffr IS NULL) OR (deffr = ?)) AND ((? = 1 AND deftr IS NULL) OR (deftr = ?)) AND ((? = 1 AND example IS NULL) OR (example = ?)) A*».'
    Apres j'ai recode comme ça:

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    using System;
    using System.Data;
    using System.Data.OleDb;
    using System.Windows.Forms;
     
    namespace DataGridviewControl
    {
        public partial class Form1 : Form
        {
            OleDbCommand cmd;
            OleDbDataAdapter da;
            OleDbCommandBuilder cmdb;
            DataSet ds;
            DataTable dt;
     
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                string connectionSourceOdsdatabaseAccdb = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=OdsDatabase.accdb";
                string oledb = "SELECT * FROM dictionary";
                OleDbConnection conn = new OleDbConnection(connectionSourceOdsdatabaseAccdb);
                conn.Open();
                cmd = new OleDbCommand(oledb, conn);
                da = new OleDbDataAdapter(cmd);
                cmdb = new OleDbCommandBuilder(da);
                ds=new DataSet();
                da.Fill(ds, "dictionary");
                dt = ds.Tables["Dictionary"];
                conn.Close();
                dataGridView1.DataSource = ds.Tables["dictionary"];
                dataGridView1.ReadOnly = true;
                save_btn.Enabled = false;
                dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            }
     
            private void new_btn_Click(object sender, EventArgs e)
            {
                dataGridView1.ReadOnly = false;
                save_btn.Enabled = true;
                new_btn.Enabled = false;
                delete_btn.Enabled = false;
            }
     
            private void delete_btn_Click(object sender, EventArgs e)
            {
                if (MessageBox.Show("Do you want to delete this row?","Delete",MessageBoxButtons.YesNo)==DialogResult.Yes)
                {
                    dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
                    da.Update(dt);
                }
            }
     
            private void save_btn_Click(object sender, EventArgs e)
            {
                da.Update(dt);
                dataGridView1.ReadOnly = true;
                save_btn.Enabled = false;
                new_btn.Enabled = true;
                delete_btn.Enabled = true;
            }
        }
    }
    Citation Envoyé par WaterTwelve21 Voir le message
    Bonjour ,

    C'est typiquement le type d'erreur qui s'identifie a l'aide du débugger .Tu tentes d'acceder a un membre/méthodes/etc d'un objet qui est null , ce qui cause cette exception.

    Bon code.
    Oui vous avez raison que j'ai google des erreurs mais je ne pouvais pas comprendre bien des solutions, etc. Parce que je suis ultra debutant J'essaye faire de mon mieux.

    Merci
    Dernière modification par rv26t ; 04/11/2017 à 13h42. Motif: Fusion de messages consécutifs, Merci d'utiliser les balises de code (bouton #), inutile de citer le message précédant dans son intégralité, cela alourdit la lecture.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/02/2011, 13h36
  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