Datagridview & Update de la Base de Données

dullbrain Messages postés 29 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 12 novembre 2010 - 11 juin 2010 à 11:43
 mayzz - 5 sept. 2013 à 18:49
Bonjour à tous,

Je travaille actuellement sur une base de données access. J'arrive sans problème à afficher les informations que je veux dans un DataGridView. Seulement, je veux que l'utilisateur puisse modifier la base de données en modifiant le DataGridView.

J'ai donc redéfini la méthode gérant la fin d'édition d'une cellule du DataGridView, à savoir : Private Sub dataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit

A l'intérieur, j'ai ce code :

Dim nomtable As String
'je stocke le nom de la table en cours de traitement
nomtable = madatatable.TableName
'je sélectionne la ligne où la modification vient de se produire
mondatarow = madatatable.Rows(e.RowIndex)
'j'actualise avec la valeur adéquate
mondatarow(DataGridView1.Columns(e.ColumnIndex).Name) = DataGridView1.Rows(e.RowIndex).Cells(DataGridView1.Columns(e.ColumnIndex).Name).Value

A ce stade, tout marche impeccablement, je me suis fait une messagebox pour vérifier que mondatarow avait bien pris en compte la nouvelle valeur tapée dans la cellule, et c'est le cas.

'je modifie les enregistrement dans le dataadapter
moncommandebuilder = New OleDbCommandBuilder(mondataadapter)

'je mets à jour
mondataadapter.Update(mondataset, nomtable)

'je vide le dataset et je le recharge
mondataadapter.Fill(mondataset, nomtable)

Et à ce moment, quand le DataGridView est actualisé, je constate que rien n'a changé.
Je débute, et concernant la méthodologie de mise à jour, je me suis inspiré des cours situés ici :
http://plasserre.developpez.com/cours/vb-net/?page=bases-donnees2#LXVII-E-1

en essayant de reproduire la partie "modifier un enregistrement"

Si quelqu'un a une idée de comment faire pour que les changements soient effectifs, je l'en remercie d'avance !

2 réponses

cs_bonagad Messages postés 87 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 19 mai 2012
11 juin 2010 à 13:15
ça devrait pourtant marcher.
je te conceille que une fois tu modifie les données dans ton datagridview, tu evite de faire d'autres traitements.Pas besoin de recupérer l'index de la ligne modifié ni rien.juste
tu mettras ce code dans l'évenememnt click du bouton (UPDATE)
TonAdapter.Update(Me.leDataSet.latable)

En fait lorsque tu modifie ton datagridview, le dataset est automatiquement mis à jour et avec ton Adapteur.update les données sont envoyées dans la base.
j'espère que je me suis fais comprendre.
@+
0
dullbrain Messages postés 29 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 12 novembre 2010
11 juin 2010 à 14:47
Merci de ta réponse,

quand je fais mondataadapter.Update(mondataset.TABLES(nomtable), il ne bronche pas, ça m'énerve vraiment parce que le pire, c'est qu'avant, il y a deux jours, ça marchait bien, il le faisait tout seul, et je ne vois pas pourquoi maintenant môssieur ne veut plus actualiser ma base de données !
0
pour actualiser ta base de données faudra créer une classe et dans cette classe créer une methode de mise a jour de ta base ainsi dans ta page (ton formulaire) tu fais appel a la methode crée dans la classe (procedure)
0
Salut,

S'il il y a 2 jours cela fonctionnait il y a deux solutions. Soit tu as effectué une modification dans le code qui est bloquante. Soit une modification sur la table ou les données qu'elles contiennent violent une contrainte. De toute façon si tu actualise par code, l'Adapter ne sert plus à grand chose. Autant créer un DataSet fortement typé, saisir une requête Update personnalisée et appeler celle-ci dans ton code au moment de l'événement de mise à jour du DataGridView.
0
Rejoignez-nous