[vb.net] Modifier un enregistrement dans un dataGrid

[Résolu]
Signaler
Messages postés
39
Date d'inscription
mardi 12 octobre 2004
Statut
Membre
Dernière intervention
13 juillet 2007
-
Messages postés
39
Date d'inscription
mardi 12 octobre 2004
Statut
Membre
Dernière intervention
13 juillet 2007
-
Bonjour à tous,

Je développe en vb.net dans le cadre de mon stage
Je liste des clients dans un datagrid de ma Form4. Pour ajouter des enregistrements dans mon datagrid aucun problème...
Par contre je voudrais pouvoir modifier les données de mes clients (mail, tel....)
Pour cela je clique sur un élément de mon datagrid puis sur un bouton de commande 'Modifier' . Je récupère alors toutes mes données dans les textbox d'une autre form (Form5)
Je voudrais alors qu'en modifiant une donnée elle se mette à jour dans mon datagrid.

Le problème c'est que je met toujours à jour le premier quelque soit l'élément que je sélectionne dans mon datagrid ...

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'Initialisation de la chaîne de paramètres pour la connexion
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source= " & Application.StartupPath & "" & "chequeAlsace.mdb;"

'Initialisation de la chaîne contenant l'instruction SQL
strsql = "SELECT Particulier.* FROM Particulier"

'Instanciation d'un Objet Connexion
Connection = New OleDbConnection

'Donner à la propriété ConnectionString les paramètres de connexion
Connection.ConnectionString = strConn

'Ouvrir la connexion
Connection.Open()

'Instancier un objet Commande
ObjetCommand = New OleDbCommand(strsql)

'Instancier un objet Adapter
MonAdapter = New OleDbDataAdapter(ObjetCommand)

'initialiser l'objet Command
ObjetCommand.Connection() = Connection

'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet
MonAdapter.Fill(MonDataSet, "Particulier")

'Mettre dans un Objet DataTable une table du DataSet
ObjetDataTable = MonDataSet.Tables("Particulier")

RowNumber = Form4.DataGrid1.CurrentRowIndex + 1
' Extraire l'enregistrement courant
ObjetDataRow = MonDataSet.Tables("Particulier").Rows(RowNumber)

'Modifier les valeurs des champs en récupérant le contenu des TextBox
'ObjetDataRow("NumCientP") = Form4.DataGrid1.CurrentRowIndex + 1
ObjetDataRow("CivilCliP") = cbCivil.Text
ObjetDataRow("NomCliP") = txtNomCli.Text
ObjetDataRow("PrenomCliP") = txtPrenomCli.Text
ObjetDataRow("AdrCliP") = txtAdrCli.Text
ObjetDataRow("CompAdrCliP") = txtCompAdrCli.Text
ObjetDataRow("CPCliP") = txtCPCli.Text
ObjetDataRow("VilleCliP") = txtVilleCli.Text
ObjetDataRow("TelCliP") = txtTelCli.Text
ObjetDataRow("FaxCliP") = txtFaxCli.Text
ObjetDataRow("MailCliP") = txtMailCli.Text

'Pour modifier les valeurs changées dans le DataAdapter
ObjetCommandBuilder = New OleDbCommandBuilder(MonAdapter)

'Mise à jour
MonAdapter.UpdateCommand = ObjetCommandBuilder.GetUpdateCommand
MonAdapter.Update(MonDataSet, "Particulier")

'On vide le DataSet et on le 'recharge' de nouveau.
MonDataSet.Clear()
MonAdapter.Fill(MonDataSet, "Particulier")
ObjetDataTable = MonDataSet.Tables("Particulier")

Me.Hide()
Form4.Show()
End Sub

Merci d'avance ...

6 réponses

Messages postés
13
Date d'inscription
jeudi 27 mars 2003
Statut
Membre
Dernière intervention
10 avril 2006

dans ton form4 declare une variable public:
public intRowNumber as integer

et avant l ouverture de ton formulaire de modification de affecte la valeur
intRowNumber =Form4.DataGrid1.CurrentRowIndex + 1

ensuite dans ton formulaire de modif tu pourras faire
RowNumber = intRowNumber

Ca devrait fonctionner
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
13
Date d'inscription
jeudi 27 mars 2003
Statut
Membre
Dernière intervention
10 avril 2006

Bonjour,

je te conseil de passer par le debugage de l application et de verifier ce que te renvois cette ligne:
RowNumber = Form4.DataGrid1.CurrentRowIndex + 1
je pense que dans RowNumber tu dois avoir 1
si c'est le cas je te conseil de memoriser dans une variable publique la valeur de Form4.DataGrid1.CurrentRowIndex + 1 au moment ou tu cliques sur la ligne a modifier ou alors sur l evenement du bouton Modifier.
Messages postés
39
Date d'inscription
mardi 12 octobre 2004
Statut
Membre
Dernière intervention
13 juillet 2007

En fait il me renvoie '0' pour RowNumber soit -1 en fait à cause du +1 ....
Messages postés
39
Date d'inscription
mardi 12 octobre 2004
Statut
Membre
Dernière intervention
13 juillet 2007

En fait il me renvoie '0' pour RowNumber soit -1 en fait à cause du +1 ....
Messages postés
39
Date d'inscription
mardi 12 octobre 2004
Statut
Membre
Dernière intervention
13 juillet 2007

A priori ça fonctionne sur la même form mais pas d'une form a l'autre ..... bizarre .... Il ne retient pas la valeur de rownumber...
Messages postés
39
Date d'inscription
mardi 12 octobre 2004
Statut
Membre
Dernière intervention
13 juillet 2007

merci de ton aide fduchamp ....