Datagridview & Update de la Base de Données

dullbrain 29 Messages postés mardi 15 décembre 2009Date d'inscription 12 novembre 2010 Dernière intervention - 11 juin 2010 à 11:43 - Dernière réponse :  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 !
Afficher la suite 

Votre réponse

4 réponses

cs_bonagad 87 Messages postés vendredi 22 décembre 2006Date d'inscription 19 mai 2012 Dernière intervention - 11 juin 2010 à 13:15
0
Merci
ç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.
@+
Commenter la réponse de cs_bonagad
dullbrain 29 Messages postés mardi 15 décembre 2009Date d'inscription 12 novembre 2010 Dernière intervention - 11 juin 2010 à 14:47
0
Merci
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 !
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)
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.
Commenter la réponse de dullbrain

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.