Ajout dans BDD [Résolu]

Signaler
-
 thefolin -
Bonjour ,

Mon probleme est que je n'arrive pas a ajouter plusieurs données dans ma BDD .
La situation en ce moment est : je code sous Visual Studio 2010 avec un BDD sous Access 2010.

Je code en nappage (en couche ) Couche metier, client et doonée.

Quand je lance mon application et que je rentre une donnée dans ma TextBox ce message apparait :
La référence d'objet n'est pas définie à une instance d'un objet.
Bon je vous donne le code des 3 couches qui se relie entre elle .
Excuse moi si c'est un code un peu long .


Ici on trouve l'evenement lier au quand on clique sur le bouton
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Maquette.C.Metier;

namespace Maquette.C.Client
{
    public partial class Caracteristique : Form
    {
        public Caracteristique()
        {
            InitializeComponent();
        }

        private System.Data.DataSet oDS;
        private CL_POUS_CARACTERISTIQUE oCarac_p;

        private void Pous_Carac_Load(object sender, EventArgs e)
        {

            this.oDS = new DataSet();
            this.oCarac_p = new CL_POUS_CARACTERISTIQUE();

        }
        /*Ajouter un produit */
        private void button1_Click(object sender, EventArgs e)
        {
            this.oCarac_p.m_add_pous(this.textBox1.Text, this.textBox2.Text, this.textBox3.Text, this.textBox4.Text, this.textBox5.Text, this.textBox6.Text, this.textBox7.Text, this.textBox8.Text, this.textBox9.Text, this.textBox10.Text, this.textBox11.Text);
        }


Ici on trouve la requete SQL pour manipuler la BDD (ici on ajout des données )
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Maquette.C.Metier
{
    class CL_TB_POUS_CARACTERISTIQUE
    {
        public string rq_sql;
        // Pour ajouter voici la requete SQL 
        public string m_Ajout_Pous_All(string produit, string CME, string Granulometrie, string TAI_couche, string TAI_nuage, string EMI, string Quantite, string Conditionnement, string Unite_travail, string Situation_travail, string Classe_explosition)
        {
            this.rq_sql = " INSERT INTO TB_POUS ([Produit],[CME],[Granulometrie],[TAI_couche],[TAI_nuage],[EMI],[Quantite],[Conditionnement],[Unite_travail],[Situation_travail],[Classe_explosition])" +
                "VALUES('" + produit
                + "','" + CME
                + "','" + Granulometrie
                + "','" + TAI_couche
                + "','" + TAI_nuage
                + "','" + EMI
                + "','" + Quantite
                + "','" + Conditionnement
                + "','" + Unite_travail
                + "','" + Situation_travail
                + "','" + Classe_explosition
                + "');";
return this.rq_sql;


Ici on trouve la méthode qui contient la requete SQL pour que l'évenment marche apres
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Maquette.C.Donnee;

namespace Maquette.C.Metier
{
    class CL_POUS_CARACTERISTIQUE
    { 
        private CL_CAD oCAD;
        private CL_TB_POUS_CARACTERISTIQUE oCarac;

       

        public CL_POUS_CARACTERISTIQUE()
        {
            this.oCAD = new CL_CAD();
            this.oCarac = new CL_TB_POUS_CARACTERISTIQUE();
        }

        // Methode pour ajouter des caracteristique pour le produit 
        public void m_add_pous(string produit, string CME, string Granulometrie, string TAI_couche, string TAI_nuage, string EMI,string Quantite, string Conditionnement, string Unite_travail, string Situation_travail,string Classe_explosition)
        {
            this.oCAD.m_ActionRows(this.oCarac.m_Ajout_Pous_All(produit, CME, Granulometrie, TAI_couche, TAI_nuage, EMI, Quantite,  Conditionnement, Unite_travail,  Situation_travail, Classe_explosition));
        }



Je ne vous donne pas le code pour la connexion de la BDD comme je peux afficher et modifier la BDD .DOnc le probleme ne vient pas de la .
Merci de m'aide ou de donnée un piste de solution .

6 réponses

Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
2
Bonjour,

Je pense que le problème vient du fait que
private void Pous_Carac_Load(object sender, EventArgs e)
ne doit pas être appelé et donc que ton oCarac_p n'est pas instancié.
Essaies en mettant cette ligne :
this.oCarac_p = new CL_POUS_CARACTERISTIQUE();
au début de ton évènement clic pour voir si ca marche.
Soit ça, soit une erreur dans un nom de textbox qui n'existe pas.
Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
2
Dans le code que tu as fourni le oCarac_p est instancié dans l'évènement de Load et non dans le clic du bouton.
ton code :
private void Pous_Carac_Load(object sender, EventArgs e)
        {

            this.oDS = new DataSet();
            this.oCarac_p = new CL_POUS_CARACTERISTIQUE();

        }
        /*Ajouter un produit */
        private void button1_Click(object sender, EventArgs e)
        {
            this.oCarac_p.m_add_pous(this.textBox1.Text, this.textBox2.Text, this.textBox3.Text, this.textBox4.Text, this.textBox5.Text, this.textBox6.Text, this.textBox7.Text, this.textBox8.Text, this.textBox9.Text, this.textBox10.Text, this.textBox11.Text);
        }

qu'il faudrait remplacer par ca pour les tests :
private void Pous_Carac_Load(object sender, EventArgs e)
        {

            this.oDS = new DataSet();

        }
        /*Ajouter un produit */
        private void button1_Click(object sender, EventArgs e)
        {
            this.oCarac_p = new CL_POUS_CARACTERISTIQUE();
            this.oCarac_p.m_add_pous(this.textBox1.Text, this.textBox2.Text, this.textBox3.Text, this.textBox4.Text, this.textBox5.Text, this.textBox6.Text, this.textBox7.Text, this.textBox8.Text, this.textBox9.Text, this.textBox10.Text, this.textBox11.Text);
        }
Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
2
Bonjour,
Est ce que tu pourrais indiquer quelle ligne génère l'erreur. Ce message signifie que tu utilises un objet sans l'avoir instancié
ex:
Objet o = new Objet();
o.méthode();

et non:
Objet o;
o.méthode();
qui va générer une erreur.
/*Ajouter un produit */
private void button1_Click(object sender, EventArgs e)
{
this.oCarac_p.m_add_pous(this.textBox1.Text, this.textBox2.Text, this.textBox3.Text, this.textBox4.Text, this.textBox5.Text, this.textBox6.Text, this.textBox7.Text, this.textBox8.Text, this.textBox9.Text, this.textBox10.Text, this.textBox11.Text);
}



voici la ligne qui a des problemes .
Le probleme c est quand j'utilise l 'evenement de ce bouton qui doit ajouter des données
Deja merci de me repondre mais le boue de code que tu ma passer étais déjà mis en place .
J'ai regardé mes TexBox il n'y a pas d'erreur de syntaxe
Merci de la réponce mais j'ai réussis à me débrouiller .
Ma solution est très simple j'ai refait mon Windows form donc la classe Client Pous_Carac

Résultat : L'ajout de donnée marche .

L0ci merci de ta part pour tes solution qui peuvent résoudre certaint problemes .

ps : Je n'ai rien touche dans mon code

Cordialement thefolin