Ajout dans base de donner

Résolu
sexbombrock Messages postés 48 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 6 juin 2009 - 23 avril 2008 à 13:43
LaMoucheQuiPete Messages postés 9 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 11 juin 2010 - 26 mai 2010 à 01:41
Bonjour

J ai un programme qui dois prendre en compte l arriver de nouveau client.
Rien de bien compliquer, un matricule qui augmente de 1 par raport aux dernier, un nom, prenom....

 j ai ajouter sur ma page en cacher un dataview, qui est racrocher a ma base de donner,
qui me permet de faire un test pour voir si le client exisite deja

le seul probleme est que je n arrive a ajouter le client a la fin.
on me precise que ma dataview est bound et donc je ne peu ajouter dedans
et je ne vois comment ajouter directement dans ma base access

pour obtenir ma base de donner je n ai pas cree de connection manuelle avec le sql
mais un simple ajout de data (l onglet en haut a cote de file et tout sa) , donc les incert ne doivent pas marcher.

merci  pour votre aide

14 réponses

sexbombrock Messages postés 48 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 6 juin 2009
28 avril 2008 à 13:32
voila enfin, le crie de joi je vous promet
donc voici le bon code, je dois remercier GOOGLE pour cette aide et bien sur ma maman et mon papa sniff

OleDbConnection conn = new OleDbConnection(connString);           

            string insert = "Insert Into Client(N°Secteur, N°Client, Nom_Client, Prenom_Client, Rue_Client, telephone_Client)" +
                " Values('" + num_secteur.Text + "', '" + num_client.Text + "', '" + nom_client.Text + "', '" + prenom_client.Text + "', '" +
                adr_client.Text + "', '" + tel_client.Text + "')";
           
            conn.Open();
            OleDbCommand addrow = new OleDbCommand(insert, conn);
            addrow.ExecuteNonQuery();               
            conn.Close();
3
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
23 avril 2008 à 19:09
Le message d'erreur explique tout.

T'as 2 solutions:
- Ne pas travailler avec des données bounds (ce que je te conseille), en n'oubliant pas d'ajouter les rows nouvelles à la base de données
- Créer un formulaire pour ajouter un client séparé de la datagridview
0
sexbombrock Messages postés 48 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 6 juin 2009
23 avril 2008 à 20:11
Ok ok me revoila

j ai suprimer donc toute les datagrid qui etait inutile et je me suis amuser a chercher et a comprendre un pour l adapter a mes besoin, voici mon code:

                    DataRow ligne = module_CommercialDataSet.Tables["Client"].NewRow();
                    ligne["N°Secteur"] = num_secteur.Text;
                    ligne["N°Client"] = num_client.Text;
                    ligne["Nom_Client"] = nom_client.Text;
                    ligne["Prenom_Client"] = prenom_client.Text;
                    ligne["Rue_client"] = adr_client.Text;
                    ligne["telephone_Client"] = tel_client.Text;
                    module_CommercialDataSet.Tables["Client"].Rows.Add(ligne);

                   
Le code se lance et fonctionne tres bien sans aucun souci
et puis apres je suis aller voir ma base access et rien, aucune trace de mon enregistrement.
J ai verifier, c est bien les bon nom car sinon j ai une erreur.

Ou se trouve caché mes ajouts de client?

merci de votre aide
0
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
24 avril 2008 à 01:09
Je vais pas t'aider beaucoup car perso je travaille "à l'ancienne", sans tous ces gadgets de datasource et autres trucs automatisés dgv<=>bdd: je fais mes requetes INSERT INTO et autres à la main. J'apprecie le controle supplémentaire que l'on a sur les objets qu'on manipule, c'est pour cela que je t'ai conseillé de ne pas travailler avec des données bounds.
0

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

Posez votre question
sexbombrock Messages postés 48 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 6 juin 2009
24 avril 2008 à 09:41
Je connais tres bien le SQL est je comprend pourquoi a c est plus facile de faire des inserts into
mais on me demande de faire autrement, sinon trop simple la vie.

dommage que tu n ai pas le petit truc en plus qui pourais m aider
mais merci quand meme de tes conseils.

merci
0
cs_gabj Messages postés 58 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 5 août 2009
25 avril 2008 à 16:13
Ok
Si tu utilise un dataadapter ce n'est pas suffisant. Si ton DataSet (opération sur des données en mode déconnecté) module_CommercialDataSet est implémenté par ton dataadapter il faut que tu appelles la methodes Update du dataadapter, pour mettre à jour ta base de données, avec en paramètre ton DataSet :

monDataAdapter.Update(module_CommercialDataSet)
 
Si tu ajoutes,supprime ou modifie une ligne de ton dataset la mise à jour se fera automatiquement dans ta base de données (car chaque ligne à un marquage Update,Delete ou Add).

Pour de plus amples informations : http://msdn2.microsoft.com/en-us/library/system.data.idataadapter.update(VS.71).aspx

JayJay974
0
sexbombrock Messages postés 48 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 6 juin 2009
25 avril 2008 à 16:47
je ne te comprend pas bien gabj
je suis en train d ajouter une ligne dans un dataset donc pourquoi faire un update
sinon ton lien ne marche pas

merci
0
cs_gabj Messages postés 58 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 5 août 2009
26 avril 2008 à 15:48
Ben si tu veux mettre à jour ta base de données à parti d'un DataSet tu utilises soit un DataAdapter (Framework 1.1) soit un TableAdapter (Framework 2.0).

1- Tu ajoutes ta lignes à ton DataTable encapsulé dans un DataSet.
2- Tu appelles la méthode Update de ton DataAdapter ou de ton TableAdapter.

Il faut bien que tu es à l'esprit qu'avec des DataSets tu travailles en mode déconnecté c'est à dire que tes données présentent dans ton DataSet ne sont plus en relation directe avec ta base de données. Tu dois utiliser la classe DataAdapter ou TableAdapter pour synchroniser tes données du DataSet et de ta BDD.

Par contre chez moi le lien fonctionne mais le texte est en anglais.

Voici un lien qui t'expliques le mode déconnecté d'ADO.Net :
http://msdn2.microsoft.com/fr-fr/library/bb469827.aspx#adonetdev_topic5

JayJay974
MCTS .NET Framework 2.0 Web Applications
0
sexbombrock Messages postés 48 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 6 juin 2009
28 avril 2008 à 11:07
ok je n en peu plus en et encore a la recherche de solution
je suis parti comme cela et meme cela ne marche pas
Apres ou est charlie ou est l erreur?

//Insert           
            string connString = @"Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=Module Commercial.mdb";
            OleDbConnection conn = new OleDbConnection(connString);
            conn.Open();

            string query = "SELECT * FROM Client";

            OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn);

            DataSet datas = new DataSet();

            //CommandBuilder construit les requêtes INSERT ET UPDATE à partir d'un select

            //Il faut avoir une clé obligatoirement

            OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(adapter);

            adapter.Fill(datas);

            DataRow ligne = datas.Tables[0].NewRow();           
            ligne["N°Secteur"] = num_secteur.Text;
            ligne["N°Client"] = num_client.Text;
            ligne["Nom_Client"] = nom_client.Text;
            ligne["Prenom_Client"] = prenom_client.Text;
            ligne["Rue_client"] = adr_client.Text;
            ligne["telephone_Client"] = tel_client.Text;
           
            datas.Tables[0].Rows.Add(ligne);

            adapter.Update(datas);

            conn.Close();

merci bien
0
sexbombrock Messages postés 48 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 6 juin 2009
28 avril 2008 à 11:25
Voila pardon pour le dernier poste je ne me prend plus la tete j ai trouver
plutot pas bien dur mais en faite en utilisant du SQL pure et bete
voici le code qui peu toujour aider l un ou l autre

string connString = @"Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=Module Commercial.mdb";
            OleDbConnection conn = new OleDbConnection(connString);
            conn.Open();

            string query = "Insert Into Client(N°Secteur, N°Client, Nom_Client, Prenom_Client, Rue_Client, telephone_Client)" +
                " Values(" + num_secteur.Text + ", " + num_client.Text + ", " + nom_client.Text + ", " + prenom_client.Text + ", " +
                adr_client.Text + ", " + tel_client.Text + ")";
            OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn);
          
            conn.Close();

voila
0
sexbombrock Messages postés 48 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 6 juin 2009
28 avril 2008 à 12:43
Me Revoila vraiment pas de chance
alors que un enregistrement marche le segond lui ne veux
je n arrive plus a ajouter de client mon code aux dessu doit etre faut

please help
0
cs_gabj Messages postés 58 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 5 août 2009
28 avril 2008 à 14:35
Dommage que tu n'es pu utiliser le dataAdapter (il faut que tu incrémentes ton identifiant de -1 dans ton DataTable : propriété AutoIncrementStep de ta DataColumn d'identifiant). En tout cas fais attention car dans ton code :

1- Tu fais une longue concaténation de string donc préfère le stringBuilder.Append.
2- Tests tes champs si tu dois insérer des numériques (N°Secteur, N°Client).

@++

JayJay974
0
sexbombrock Messages postés 48 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 6 juin 2009
28 avril 2008 à 15:09
tres inteligent mais pour autant je ne sais pas encore comment faire sa
je supose que je recuper le textbox1.text.type ou un truc semplable
je regarde sa tout de suite

sinon le stringBuilder je ne connais pas du tout
mais je connais le
string nom="charle marie "
nom+="bob thierrry..."

je ne sais pas si sa ressemble a sa
bof je regarde pour les type et je revien
0
LaMoucheQuiPete Messages postés 9 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 11 juin 2010
26 mai 2010 à 01:41
Bonjour a tous.

J'ai également le meme probleme d'écriture dans ma base de données Access et je solicite votre aide car je suis perdu en programation et je m'initie avec c# et visual studio 2008.
ma connexion avec la base a l'air oK car j'arrive a lire les différentes colones et ligne dans ma table "agent" de ma base de donnée "Shem".
Voici mon code qui passe a la compilation mais quand je vais voir dans ma base access rien ne se passe , pas de nouvel agent crée.je sais plu quoi faire j'aitout éssayé :

public static void Main(string[] args)
{
string path = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\SHEM.mdb";
// string strAccessConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\BTS2\ANDRAL\SHEM\Projet c#\test unitaire\OleDbEleves\SHEM.mdb";
string strAccessConn = path;
string strAccessSelect = "SELECT * FROM Agent";
// string strAccessSelectAstreinte = "SELECT * FROM TableAstreinte";


// Crée le groupe de données et y ajoute la table Agent :
DataSet myDataSet = new DataSet();
OleDbConnection myAccessConn = null;
try
{
myAccessConn = new OleDbConnection(strAccessConn);
Console.WriteLine("Connexion OK");
}
catch (Exception ex)
{
Console.WriteLine("Erreur: création de la connection a la base de données. \n{0}", ex.Message);
return;
}

try
{

OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect, myAccessConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);

myAccessConn.Open();
myDataAdapter.Fill(myDataSet, "Agent");
//string Julien = string.Empty;
//myAccessCommand.CommandText "DELETE FROM Agent where Prenom ? ";
//myAccessCommand.Parameters.Add("Prenom", OleDbType.Char).Value = Julien;
myDataAdapter.Update(myDataSet);
myDataAdapter.Fill(myDataSet, "TableAstreinte");
}

catch (Exception ex)
{
Console.WriteLine("Erreur: pas de réqupération de données dans la base.\n{0}", ex.Message);
return;
}


//un groupe de données pouvant contenir plusieurs tables,
//celles ci sont toutes insérées dans un tableau:
DataTableCollection dta = myDataSet.Tables;



DataColumnCollection drc = myDataSet.Tables["Agent"].Columns;


DataRowCollection dra = myDataSet.Tables["Agent"].Rows;
//DataRowCollection dra = myDataSet.Tables["TableAstreinte"].Rows;
DataTable table;
DataRow dr = myDataSet.Tables["Agent"].NewRow();

table = myDataSet.Tables["Agent"];


dr = table.NewRow();
dr[0] = "Yann";
dr[1] = "paul";
table.Rows.Add(dr);
table.AcceptChanges();


myAccessConn.Close();

En espérant que quelqun puisse m'aider car je n'arrive toujours pas a ajouter et supprimer une ligne de ma base,je tient a signaler que je suis néophyte en prog.
La technologie est ADO.NET avec connecteur Oledb et bdd Access

Merci a tous pour votre aide

aurevoir
0
Rejoignez-nous