[vb.net] Modifier un enregistrement dans un dataGrid [Résolu]

cs_mik67 40 Messages postés mardi 12 octobre 2004Date d'inscription 13 juillet 2007 Dernière intervention - 12 janv. 2006 à 10:29 - Dernière réponse : cs_mik67 40 Messages postés mardi 12 octobre 2004Date d'inscription 13 juillet 2007 Dernière intervention
- 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 ...
Afficher la suite 

6 réponses

fduchamp 13 Messages postés jeudi 27 mars 2003Date d'inscription 10 avril 2006 Dernière intervention - 12 janv. 2006 à 13:56
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
fduchamp 13 Messages postés jeudi 27 mars 2003Date d'inscription 10 avril 2006 Dernière intervention - 12 janv. 2006 à 12:22
0
Utile
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.
cs_mik67 40 Messages postés mardi 12 octobre 2004Date d'inscription 13 juillet 2007 Dernière intervention - 12 janv. 2006 à 12:37
0
Utile
En fait il me renvoie '0' pour RowNumber soit -1 en fait à cause du +1 ....
cs_mik67 40 Messages postés mardi 12 octobre 2004Date d'inscription 13 juillet 2007 Dernière intervention - 12 janv. 2006 à 12:38
0
Utile
En fait il me renvoie '0' pour RowNumber soit -1 en fait à cause du +1 ....
cs_mik67 40 Messages postés mardi 12 octobre 2004Date d'inscription 13 juillet 2007 Dernière intervention - 12 janv. 2006 à 13:08
0
Utile
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...
cs_mik67 40 Messages postés mardi 12 octobre 2004Date d'inscription 13 juillet 2007 Dernière intervention - 12 janv. 2006 à 16:10
0
Utile
merci de ton aide fduchamp ....

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.