Ajout dans BDD

Résolu
thefolin - 23 oct. 2012 à 10:58
 thefolin - 24 oct. 2012 à 14:52
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

cs_L0ci Messages postés 224 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 11 juin 2013 7
23 oct. 2012 à 14:11
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.
3
cs_L0ci Messages postés 224 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 11 juin 2013 7
24 oct. 2012 à 14:25
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);
        }
3
cs_L0ci Messages postés 224 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 11 juin 2013 7
23 oct. 2012 à 13:20
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.
0
/*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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
0
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
0
Rejoignez-nous