Maj Base de données incorrecte !!

Signaler
Messages postés
156
Date d'inscription
mardi 31 août 2004
Statut
Membre
Dernière intervention
21 mai 2015
-
Messages postés
156
Date d'inscription
mardi 31 août 2004
Statut
Membre
Dernière intervention
21 mai 2015
-
Bonjour,
j'essai depuis quelque heure l'affichage via datagridview d'une table toute simple ensuite l'ajout via datagridveiw d'une ligne avec ce code :

for (int i = 0; i <= v_Ds.Tables["Client"].Columns.Count-1; i++)
{
v_Dr[i] = dgv_Clients.CurrentRow.Cells[i + 1].Value;
}
v_Ds.Tables["Client"].Rows.Add(v_Dr);

v_ConnexionString.Open();
OleDbCommandBuilder v_CmdBuild = new OleDbCommandBuilder(v_DataAdapt);
v_DataAdapt.InsertCommand = v_CmdBuild.GetInsertCommand();
v_DataAdapt.Update(v_Ds, "Client");
v_ConnexionString.Close();

le probleme c que ca genere une exception au niveau de la Maj et quand je regarde le contenu du "v_DataAdapt.InsertCommand" je trouve ça :

INSERT INTO client (code, nom, prenom, adresse) VALUES (?, ?, ?, ?)

je sais pas ce qui va pas avec mon code ???
merci pour votre aide

2 réponses

Messages postés
168
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
28 novembre 2012
5
Salut!

Au niveau de l'affichage, il te serait plus simple de faire:


dgv_Clients.DataSource = v_Ds.Tables["Client"];



Pour l'insertion, tu dois plutôt écrire:


for (int i = 0; i <= v_Ds.Tables["Client"].Columns.Count-1; i++)
{
   v_Dr[i] = dgv_Clients.CurrentRow.Cells[i + 1].Value;
   v_Ds.Tables["Client"].Rows.Add(v_Dr);
}



Avant d'utiliser ça:

v_Dr[i] = dgv_Clients.CurrentRow.Cells[i + 1].Value;


assure toi d'avoir effectué un binding entre ton datagridview et ton datatable; ou essai plutôt de faire une insertion en affectant respectivement chaque champ de ton DataRow à leur valeur respectives.

Et pour terminer, assure toi que la propriété InsertCommand de ton DataAdapter a été bien définie.

Only the strong survive !
Messages postés
156
Date d'inscription
mardi 31 août 2004
Statut
Membre
Dernière intervention
21 mai 2015

merci pour ta reponse !!
j'ai vraiment pas compris ta proposition quand tu dit de mettre :
for (int i = 0; i <= v_Ds.Tables["Client"].Columns.Count-1; i++)
{
v_Dr[i] = dgv_Clients.CurrentRow.Cells[i + 1].Value;
v_Ds.Tables["Client"].Rows.Add(v_Dr);
}


ensuite de mettre ça :
v_Dr[i] = dgv_Clients.CurrentRow.Cells[i + 1].Value;


c'est comme si a chaque fois qu'on rempli une colonne de la grid dans sa colonne dans le datarow on ajoute le datarow dans le dataset et ensuite tu refaut l'affectation de la colonne !!
desolé mais je crois que je vois pas ce que tu veux dire !!