Bonjour à toutes et à tous,
Je suis en train de faire une application gestion de stock d'un pharmacie avec vb2008 & sql2005
Le problème c'est que j'ai une erreur au moment où j'ajoute un nouveau article leur quantile plus de 1000 à textbox quantité "QuantityTextBox":



Voici le code pour que ce soit plus clair:

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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
Public Class ItemsForm
 
    Private Sub ItemsForm_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        Dim CuurentSuuplierCode As Short = CShort(Val(Me.SupplierNameComboBox.SelectedValue))
 
 
        Me.TblSuppliersTableAdapter.Fill(Me.PharmaDataSet.TblSuppliers)
 
        Me.SupplierNameComboBox.SelectedValue = CuurentSuuplierCode
    End Sub
 
    Private Sub ItemsForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' ----- autorisation ------------------------------------------------------------------------------------------------------------- '
        If Not (CurrentUser Is Nothing) Then
            If Not CurrentUser.MainData Then
                Call MessageBox.Show("Vous n'êtes pas autorisés à entrer", "Sécurité", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                Me.Close()
            Else
                Me.SaveButton.Enabled = CurrentUser.MainDataSave
                Me.DeleteButton.Enabled = CurrentUser.MainDataDelete
            End If
        End If
        ' ----------------------------------------------------------------------------------------------------------------------------------- '
 
 
        Me.TblOriginCountriesTableAdapter.Fill(Me.PharmaDataSet.TblOriginCountries)
 
        Call Me.TblItemsTableAdapter.Fill(Me.PharmaDataSet.TblItems)
 
        Me.iTemCodeTextBox.Text = ""
    End Sub
 
    Private Sub GridView1_CustomDrawCell(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs) Handles GridView1.CustomDrawCell
        If (e.Column.FieldName = "RunTimeID") Then
            e.DisplayText = (e.RowHandle + 1).ToString
        ElseIf (e.Column.FieldName = "Quantity") Then
            e.DisplayText = Val(e.DisplayText).ToString
        End If
    End Sub
 
    Private Sub GridView1_FocusedRowChanged(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles GridView1.FocusedRowChanged
        Try
            Me.iTemCodeTextBox.Text = Me.GridView1.GetRowCellValue(e.FocusedRowHandle, "iTemCode").ToString
        Catch Ex As Exception
            Me.iTemCodeTextBox.Text = ""
        End Try
    End Sub
 
    Private Sub iTemCodeTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles iTemCodeTextBox.TextChanged
        Call Me.ErrorProvider1.Clear()
 
        Dim MYRow As PharmaDataSet.TblItemsRow = Nothing
 
        Try
            MYRow = Me.PharmaDataSet.TblItems.FindByiTemCode(CLng(Val(Me.iTemCodeTextBox.Text)))
        Catch Ex As Exception
            Call Me.iTemCodeTextBox.Focus()
            Call Me.ErrorProvider1.SetError(Me.iTemCodeTextBox, Ex.Message)
        End Try
 
        If (MYRow Is Nothing) Then
            Me.iTemNameTextBox.Text = ""
            Me.iTemBarCodeTextBox.Text = ""
 
            Me.CostPriceTextBox.Text = ""
            Me.SalePriceTextBox.Text = ""
            Me.ProfitTextBox.Text = ""
            Me.EnterDatePicker.Value = Today
 
            ' ----- Régler la date d'expiration au bout de 3 ans à partir de maintenant par défaut ---------------------------------------------------------------- '
            Me.ExpireDatePicker.Value = DateAdd(DateInterval.Year, 3, DateSerial(Year(Today), Month(Today), 1))
            Me.ExpireDatePicker.Checked = False
            ' ------------------------------------------------------------------------------------------------------------------------------- '
 
            Me.QuantityTextBox.Text = ""
            Me.MinQuantityTextBox.Text = ""
            Me.OriginCountryComboBox.Text = ""
            Me.SupplierNameComboBox.SelectedIndex = -1
        Else
            Me.iTemNameTextBox.Text = MYRow.iTemName
            Me.iTemBarCodeTextBox.Text = MYRow.iTemBarCode
 
            Me.CostPriceTextBox.Text = ValToStr(MYRow.CostPrice)
            Me.SalePriceTextBox.Text = ValToStr(MYRow.SalePrice)
 
            Me.QuantityTextBox.Text = MYRow.Quantity.ToString
            Me.EnterDatePicker.Value = MYRow.EnterDate
 
            Try
                Me.ExpireDatePicker.Value = MYRow.ExpireDate
            Catch Ex As Exception
                Me.ExpireDatePicker.Checked = False
            End Try
 
            If Not Me.ExpireDatePicker.Checked Then
                ' ----- Régler la date d'expiration au bout de 3 ans à partir de maintenant par défaut ------------------------------------------------------------ '
                Me.ExpireDatePicker.Value = DateAdd(DateInterval.Year, 3, DateSerial(Year(Today), Month(Today), 1))
                ' --------------------------------------------------------------------------------------------------------------------------- '
            End If
 
            Me.OriginCountryComboBox.Text = MYRow.OriginCountry
            Me.SupplierNameComboBox.Text = MYRow.SupplierName
            Me.MinQuantityTextBox.Text = MYRow.MinQuantity.ToString
 
            Me.GridView1.FocusedRowHandle = Me.GridView1.LocateByDisplayText(-1, iTemCodeColumn, MYRow.iTemCode.ToString)
        End If
    End Sub
    Private Sub CalcProfit(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CostPriceTextBox.TextChanged, SalePriceTextBox.TextChanged
        ' ----- Calculer lucratif ---------------------------------------------------------------------------------------------------------------- '
        Me.ProfitTextBox.Text = ValToStr(StrToVal(Me.SalePriceTextBox.Text) - StrToVal(Me.CostPriceTextBox.Text))
        ' ----------------------------------------------------------------------------------------------------------------------------------- '
    End Sub
 
    Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveButton.Click
        Call Me.ErrorProvider1.Clear()
 
        Dim HasErrors As Boolean = False
 
        If (Me.SupplierNameComboBox.SelectedIndex < 0) Then
            HasErrors = True
            Call Me.SupplierNameComboBox.Focus()
            Call ErrorProvider1.SetError(Me.SupplierNameComboBox, "S.V.P Sélectionner le Nom de Fournisseur")
        End If
 
        If (StrToVal(Me.QuantityTextBox.Text) < 0) Then
            HasErrors = True
            Call Me.QuantityTextBox.Focus()
            Call ErrorProvider1.SetError(Me.QuantityTextBox, "Ne Peut Pas Entrer Une Quntité en Moins")
        End If
 
        If (StrToVal(Me.MinQuantityTextBox.Text) < 0) Then
            HasErrors = True
            Call Me.MinQuantityTextBox.Focus()
            Call ErrorProvider1.SetError(Me.MinQuantityTextBox, "Ne Peut Pas Entrer Une Quntité en Moins")
        End If
 
 
        If Me.ExpireDatePicker.Checked Then
            If Date.Compare(Me.EnterDatePicker.Value.Date.AddDays(7), Me.ExpireDatePicker.Value.Date) = 0 Then
                HasErrors = True
                Call Me.ExpireDatePicker.Focus()
                Call ErrorProvider1.SetError(Me.ExpireDatePicker, "Ne Peut Pas Entrer la Date de Classe Unique en Son Introduction Avant la Date d'Expiration à 7 Jours")
            End If
        End If
 
        If (StrToVal(Me.ProfitTextBox.Text) <= 0) Then
            HasErrors = True
            Call Me.SalePriceTextBox.Focus()
            Call ErrorProvider1.SetError(Me.ProfitTextBox, "SVP Remplissez la Champ de Vente et l'Achat")
        End If
 
        If (StrToVal(Me.SalePriceTextBox.Text) <= 0) Then
            HasErrors = True
            Call Me.SalePriceTextBox.Focus()
            Call ErrorProvider1.SetError(Me.SalePriceTextBox, "SVP Entrez le Prix de Vente")
        End If
 
        If (StrToVal(Me.CostPriceTextBox.Text) <= 0) Then
            HasErrors = True
            Call Me.CostPriceTextBox.Focus()
            Call ErrorProvider1.SetError(Me.CostPriceTextBox, "SVP Entrez le Prix d'Achat")
        End If
 
        If (Me.iTemNameTextBox.Text.Trim.Length < 1) Then
            HasErrors = True
            Call Me.iTemNameTextBox.Focus()
            Call ErrorProvider1.SetError(Me.iTemNameTextBox, "SVP Entrez le Nom Produit")
        End If
 
        If (Me.iTemCodeTextBox.Text.Trim.Length < 1) Then
            HasErrors = True
            Call Me.iTemCodeTextBox.Focus()
            Call ErrorProvider1.SetError(Me.iTemCodeTextBox, "SVP Entrez le Code Produit")
        End If
 
        If HasErrors Then Return
        ' ----------------------------------------------------------------------------------------------------------------------------------- '
 
        Dim MYRow As PharmaDataSet.TblItemsRow = Nothing
 
        Try
            MYRow = Me.PharmaDataSet.TblItems.FindByiTemCode(CLng(Val(Me.iTemCodeTextBox.Text)))
        Catch Ex As Exception
            Call Me.iTemCodeTextBox.Focus()
            Call Me.ErrorProvider1.SetError(Me.iTemCodeTextBox, Ex.Message)
        End Try
 
        Try
            If (MYRow Is Nothing) Then                          ' Nouveau Row
                Call Me.TblItemsTableAdapter.Insert(CLng(Val(Me.iTemCodeTextBox.Text)), Me.iTemNameTextBox.Text, Me.iTemBarCodeTextBox.Text, StrToDec(Me.CostPriceTextBox.Text), StrToDec(Me.SalePriceTextBox.Text), CDec(Val(Me.QuantityTextBox.Text)), Me.EnterDatePicker.Value, Me.ExpireDatePicker.Value, Me.OriginCountryComboBox.Text, CShort(Val(Me.SupplierNameComboBox.SelectedValue)), CShort(Val(Me.MinQuantityTextBox.Text)))
            Else                                                ' Mise à jour Row
                Call Me.TblItemsTableAdapter.Update(Me.iTemNameTextBox.Text, Me.iTemBarCodeTextBox.Text, StrToDec(Me.CostPriceTextBox.Text), StrToDec(Me.SalePriceTextBox.Text), CDec(Val(Me.QuantityTextBox.Text)), Me.EnterDatePicker.Value, Me.ExpireDatePicker.Value, Me.OriginCountryComboBox.Text, CShort(Val(Me.SupplierNameComboBox.SelectedValue)), CShort(Val(Me.MinQuantityTextBox.Text)), CLng(Val(Me.iTemCodeTextBox.Text)))
            End If
 
 
            Call Me.TblItemsTableAdapter.Fill(Me.PharmaDataSet.TblItems)
 
            Call MessageBox.Show("L'ajout est Effectué Avec Succes", "Ajouter", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
            Me.iTemCodeTextBox.Text = ""
        Catch Ex As Exception
            Call MessageBox.Show(Ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
 
        Call Me.iTemCodeTextBox.Focus()
    End Sub
    Private Sub DeleteButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DeleteButton.Click
        Call Me.ErrorProvider1.Clear()
 
        Dim MYRow As PharmaDataSet.TblItemsRow = Nothing
 
        Try
            MYRow = Me.PharmaDataSet.TblItems.FindByiTemCode(CLng(Val(Me.iTemCodeTextBox.Text)))
        Catch Ex As Exception
            Call Me.iTemCodeTextBox.Focus()
            Call Me.ErrorProvider1.SetError(Me.iTemCodeTextBox, Ex.Message)
        End Try
 
        Try
            If (MYRow Is Nothing) Then
                Call Me.ErrorProvider1.SetError(Me.iTemCodeTextBox, "SVP Entrer Votre Code Article")
            Else                                                    ' supprimer Row
                If MessageBox.Show("Voulez Vous Vraiment Supprimer Cet Article?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                    Call Me.TblItemsTableAdapter.Delete(CLng(Val(Me.iTemCodeTextBox.Text)))
 
 
                    Call Me.TblItemsTableAdapter.Fill(Me.PharmaDataSet.TblItems)
 
                    Me.iTemCodeTextBox.Text = ""
                End If
            End If
        Catch Ex As SqlClient.SqlException
            If Ex.Number = 547 Then
                Call MessageBox.Show("Ne Peut Pas Supprimer l'Article Avant de Supprimer tous les Enregistrements", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Else
                Call MessageBox.Show(Ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If
        Catch Ex As Exception
            Call MessageBox.Show(Ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub
    Private Sub ExitButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitButton.Click
        Call Me.Close()
    End Sub
End Class
table des articles dans la basse de donné



Si quelqu'un a une idée

Merci d'avance.