Maj Base de données incorrecte !!

foufidou Messages postés 156 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 21 mai 2015 - 8 déc. 2010 à 17:05
foufidou Messages postés 156 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 21 mai 2015 - 8 déc. 2010 à 23:23
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

imothepe_33 Messages postés 168 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 28 novembre 2012 7
8 déc. 2010 à 18:47
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 !
0
foufidou Messages postés 156 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 21 mai 2015
8 déc. 2010 à 23:23
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 !!
0