Modifier un enregistrement - vb2010 acces 2007
Salut à tout le monde;
je développe une application de gestion des élèves et je suis bloqué à mise à jour d'un enregistrement existant.
ma table est:
Citation:
create table NOTES (N° int identity primary key, Classe float, C1 float, C2 float, CI float, CA float, MOY float)
un module qui contient des variables globales:
Code:
1 2 3 4 5 6 7 8
|
Imports System.Data.OleDb
Module Module1
'instancier l'objet de connexion
Public Cn As New OleDbConnection("Provider=MicroSoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\gestion.accdb")
Public Cmd As New OleDbCommand
Public Dr As OleDbDataReader
End Module |
un formulaire qui se charge en remplissant un Datagridview avec les données de la table NOTES:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
Dim i, j As Integer
Cn.Open()
If Cn.State = ConnectionState.Open Then
Cmd.CommandType = CommandType.Text
Cmd.CommandText = "SELECT * FROM NOTES "
CmdClasse.Connection = Cn
Dr = CmdClasse.ExecuteReader
If Dr.HasRows Then
Dim t As New DataTable
t.Load(Dr)
DataGridView1.DataSource = t
Dr.Close()
Cn.Close()
Else
MsgBox("Aucun résultat trouvé", 0 + 16, "Attention !!")
End If
Else
MsgBox("Erreur de connexion", 0 + 16, "Erreur !!")
End If |
le datagridview charge dand 24 lignes les champs N° et classe dans les colonne 0 et 1 les autre colonnes (2,3,4,5,6) sont encore vides, on va donc les remplir.
un bouton btnEdit permetant d'exporter les notes à la table NOTES à partir de ce datagridview :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click
Dim j As Integer
For j = 0 To 24
DataGridView1.Rows.Item(j).Cells(6).Value = (DataGridView1.Rows.Item(j).Cells(2).Value + DataGridView1.Rows.Item(j).Cells(3).Value _
+ DataGridView1.Rows.Item(j).Cells(4).Value * 4 + DataGridView1.Rows.Item(j).Cells(5).Value * 2) / 5
With Cmd
.CommandType = CommandType.Text
.CommandText = "UPDATE NOTES SET C1 =@P1, C2 =@P2, CI =@P3, CA =@P4, MOY =@P5"
.Connection = Cn
With .Parameters
.AddWithValue("@P1", DataGridView1.Rows.Item(j).Cells(2).Value)
.AddWithValue("@P2", DataGridView1.Rows.Item(j).Cells(3).Value)
.AddWithValue("@P3", DataGridView1.Rows.Item(j).Cells(4).Value)
.AddWithValue("@P4", DataGridView1.Rows.Item(j).Cells(5).Value)
.AddWithValue("@P5", DataGridView1.Rows.Item(j).Cells(6).Value)
End With
End With
Cn.Open()
Cmd.ExecuteNonQuery()
Cn.Close()
Next
End Sub |
le problème c'est que la modification porte sur les 24 champs de la table mais la boucle for ne sort pas de la première ligne (j=0) d’où la première ligne de la table de duplique 24 fois.
Merci pour l'aide..