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:
un module qui contient des variables globales:create table NOTES (N° int identity primary key, Classe float, C1 float, C2 float, CI float, CA float, MOY float)
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 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
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.
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
un bouton btnEdit permetant d'exporter les notes à la table NOTES à partir de ce datagridview :
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.
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
Merci pour l'aide..
Partager