Ajout dans base de donner [Résolu]

sexbombrock 48 Messages postés lundi 26 novembre 2007Date d'inscription 6 juin 2009 Dernière intervention - 23 avril 2008 à 13:43 - Dernière réponse : LaMoucheQuiPete 9 Messages postés lundi 19 octobre 2009Date d'inscription 11 juin 2010 Dernière intervention
- 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
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
sexbombrock 48 Messages postés lundi 26 novembre 2007Date d'inscription 6 juin 2009 Dernière intervention - 28 avril 2008 à 13:32
3
Merci
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();

Merci sexbombrock 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de sexbombrock
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 23 avril 2008 à 19:09
0
Merci
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
Commenter la réponse de bubbathemaster
sexbombrock 48 Messages postés lundi 26 novembre 2007Date d'inscription 6 juin 2009 Dernière intervention - 23 avril 2008 à 20:11
0
Merci
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
Commenter la réponse de sexbombrock
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 24 avril 2008 à 01:09
0
Merci
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.
Commenter la réponse de bubbathemaster
sexbombrock 48 Messages postés lundi 26 novembre 2007Date d'inscription 6 juin 2009 Dernière intervention - 24 avril 2008 à 09:41
0
Merci
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
Commenter la réponse de sexbombrock
cs_gabj 58 Messages postés jeudi 16 septembre 2004Date d'inscription 5 août 2009 Dernière intervention - 25 avril 2008 à 16:13
0
Merci
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
Commenter la réponse de cs_gabj
sexbombrock 48 Messages postés lundi 26 novembre 2007Date d'inscription 6 juin 2009 Dernière intervention - 25 avril 2008 à 16:47
0
Merci
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
Commenter la réponse de sexbombrock
cs_gabj 58 Messages postés jeudi 16 septembre 2004Date d'inscription 5 août 2009 Dernière intervention - 26 avril 2008 à 15:48
0
Merci
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
Commenter la réponse de cs_gabj
sexbombrock 48 Messages postés lundi 26 novembre 2007Date d'inscription 6 juin 2009 Dernière intervention - 28 avril 2008 à 11:07
0
Merci
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
Commenter la réponse de sexbombrock
sexbombrock 48 Messages postés lundi 26 novembre 2007Date d'inscription 6 juin 2009 Dernière intervention - 28 avril 2008 à 11:25
0
Merci
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
Commenter la réponse de sexbombrock
sexbombrock 48 Messages postés lundi 26 novembre 2007Date d'inscription 6 juin 2009 Dernière intervention - 28 avril 2008 à 12:43
0
Merci
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
Commenter la réponse de sexbombrock
cs_gabj 58 Messages postés jeudi 16 septembre 2004Date d'inscription 5 août 2009 Dernière intervention - 28 avril 2008 à 14:35
0
Merci
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
Commenter la réponse de cs_gabj
sexbombrock 48 Messages postés lundi 26 novembre 2007Date d'inscription 6 juin 2009 Dernière intervention - 28 avril 2008 à 15:09
0
Merci
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
Commenter la réponse de sexbombrock
LaMoucheQuiPete 9 Messages postés lundi 19 octobre 2009Date d'inscription 11 juin 2010 Dernière intervention - 26 mai 2010 à 01:41
0
Merci
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
Commenter la réponse de LaMoucheQuiPete

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.