[vb.net] Modifier un enregistrement dans un dataGrid

Résolu
cs_mik67 Messages postés 39 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 13 juillet 2007 - 12 janv. 2006 à 10:29
cs_mik67 Messages postés 39 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 13 juillet 2007 - 12 janv. 2006 à 16:10
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

fduchamp Messages postés 13 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 10 avril 2006
12 janv. 2006 à 13:56
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
fduchamp Messages postés 13 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 10 avril 2006
12 janv. 2006 à 12:22
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.
0
cs_mik67 Messages postés 39 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 13 juillet 2007
12 janv. 2006 à 12:37
En fait il me renvoie '0' pour RowNumber soit -1 en fait à cause du +1 ....
0
cs_mik67 Messages postés 39 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 13 juillet 2007
12 janv. 2006 à 12:38
En fait il me renvoie '0' pour RowNumber soit -1 en fait à cause du +1 ....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mik67 Messages postés 39 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 13 juillet 2007
12 janv. 2006 à 13:08
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...
0
cs_mik67 Messages postés 39 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 13 juillet 2007
12 janv. 2006 à 16:10
merci de ton aide fduchamp ....
0
Rejoignez-nous