Bonjour
Le code ci dessous permet d'enregistrer la modification d' une facture déja existante qui est sous forme d'un datagridview.
Donc je commence par la suppression de l'ancienne avec la premiere partie et j'insere de nouveau dans la deuxième.
Le code fonctionne parfaitement dans le cas ou j'ai pas un grand nombre de ligne mais si j'ai un nombre de ligne important il m'affiche
violation de la clé primaire(LREF et LLIGNE sont la clé primaire)
Merci de m'aider a resoudre ce problème.
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
 
            '**********************************suppression************************
 
            connexion.con.Open() ' ouverture de la connexion vers la base
            Dim cmd2 As New SqlCommand("delete from [hichem].[dbo].[FACTURELIGNE4] where LREF=" & txtCustomComplete.Text, connexion.con) ' la commande
            cmd2.ExecuteNonQuery()
            connexion.con.Close()
 
 
 
 
'***************ajout****************************
            Dim i As Integer = 0
            Do
 
 
                connexion.con.Open() ' ouverture de la connexion vers la base
                Dim cmd As New SqlCommand("insert into [hichem].[dbo].[FACTURELIGNE4] (LREF,LCART,LDES,LQLIV,LPRXU,LREM,LTVA,LNOMCL,LAUXCL,LDATOP,LCTVA,LLIGNE) VALUES(@parm1,@parm2,@parm3,@parm4,@parm5,@parm6,@parm7,@parm8,@parm9,@parm10,@parm11,@parm12)", connexion.con) ' la commande
                cmd.Parameters.Add("@parm1", SqlDbType.VarChar).Value = Me.txtCustomComplete.Text
                cmd.Parameters.Add("@parm2", SqlDbType.VarChar).Value = Dg.Rows(i).Cells(0).Value
                cmd.Parameters.Add("@parm3", SqlDbType.VarChar).Value = Dg.Rows(i).Cells(1).Value
 
 
                Dim qte As Double
                Dim ss As String = Dg.Rows(i).Cells(2).Value
                qte = CDbl(ss)
 
                cmd.Parameters.Add("@parm4", SqlDbType.Float).Value = qte
                cmd.Parameters.Add("@parm5", SqlDbType.Int).Value = Dg.Rows(i).Cells(3).Value
                cmd.Parameters.Add("@parm6", SqlDbType.Float).Value = Dg.Rows(i).Cells(4).Value
                cmd.Parameters.Add("@parm7", SqlDbType.Float).Value = Dg.Rows(i).Cells(5).Value
 
                cmd.Parameters.Add("@parm8", SqlDbType.VarChar).Value = Me.nom.Text
 
                cmd.Parameters.Add("@parm9", SqlDbType.VarChar).Value = Me.code.Text
                cmd.Parameters.Add("@parm10", SqlDbType.Date).Value = Me.dat.Text
 
                Dim tva As String = Dg.Rows(i).Cells(5).Value
                Select Case tva
 
                    Case 18
                        tva = 2
                    Case 22.5
                        tva = 2
 
                    Case 29
                        tva = 3
 
                    Case 0
                        tva = 0
 
                    Case 12
                        tva = 1
                    Case 15
                        tva = 1
 
                    Case 20
                        tva = 4
                    Case 20
                        tva = 4
                End Select
 
                tva = CStr(tva)
 
                cmd.Parameters.Add("@parm11", SqlDbType.NVarChar).Value = tva
                cmd.Parameters.Add("@parm12", SqlDbType.NVarChar).Value = Dg.Rows(i).Cells(9).Value
 
                cmd.ExecuteNonQuery()
 
                Dim c As String = Dg.Rows(i).Cells(0).Value
 
 
                Dim cmd5 As New SqlCommand("UPDATE [hichem].[dbo].[ARTICLE] SET QTDISP=QTDISP+" & Dg.Rows(i).Cells(11).Value & "-" & Dg.Rows(i).Cells(2).Value & " WHERE ART='" & c & "'", connexion.con) ' la commande
                cmd5.ExecuteNonQuery()
 
 
 
 
                i = i + 1
                connexion.con.Close()
            Loop While Dg.Rows(i).Cells(0).Value <> ""
 
 
 
            '*************************nbre ligne***********************
            Dim b As Integer
            nlg = 0
            For b = 0 To 120
                If Dg.Rows(b).Cells(0).Value <> "" Then
                    nlg = nlg + 1
                Else
                    Exit For
                End If
            Next
            nl.Text = nlg