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:
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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..