Bonjour
Je sollicite encore une fois votre aide pour résoudre mon pb de validation de données
J'ai testé 2 solutions et une seule marche
1) Solution qui marche
Dans le formulaire 1 DGV et les 3 champs à coté dans des textBox
La saisie des données lors d’un ajout se fait dans les Texbox
Fonction enregistrement
Fonction validation
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 Private Sub Enregistrement() If Validation() Then 'Test si la saisie est correcte Me.RangementBindingSource.EndEdit() Me.Validate() Try Me.TableAdapterManager.UpdateAll(Me.RangementDataSet) txt_status.Text = "" Catch ex As Exception MessageBox.Show(ex.Message) End Try Else txt_status.Text = "Données non sauvegardées : les 2 champs doivent être remplis !" End If End Sub
2) Solution qui ne marche pas
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 Private Function Validation() As Boolean 'Gestion des erreurs avant enregistrement Dim HasNoError As Boolean = True 'EP1.Clear() If txt_lib.Text.Length = 0 Then HasNoError = False End If If txt_libCourt.Text.Length = 0 Then HasNoError = False End If Return HasNoError End Function
Les textbox sont supprimées, l’ajout se fait dans le DGV
La fonction enregistrement reste la même
La fonction validation devient
Si je clique sur enregistrement alors que le focus est toujours sur la dernière colonne du DGV la valeur entrée n’est pas considérée et cause une erreur , mais ça je pense pouvoir le corriger en forçant le focus ailleurs lors du clic enregistrement
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 Private Function Validation() As Boolean Dim HasNoError As Boolean = True Dim row As RangementDataSet.RangementRow row = CType(CType(Me.RangementBindingSource.Current, DataRowView).Row, RangementDataSet.RangementRow) Dim RangementLib As String = row.RGM_LIB Dim RangementLibCourt As String = row.RGM_LIB_COURT If RangementLib.Length = 0 Then HasNoError = False End If If RangementLibCourt.Length = 0 Then HasNoError = False End If Return HasNoError End Function
Si la valeur est nulle, elle n’est pas interceptée à temps car elle cause une erreur dans la partie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")> _ Public Property RGM_LIB() As String Get Try Return CType(Me(Me.tableRangement.RGM_LIBColumn),String) Catch e As Global.System.InvalidCastException Throw New Global.System.Data.StrongTypingException("La valeur pour la colonne 'RGM_LIB' dans la table 'Rangement' est DBNull.", e) End Try End Get Set Me(Me.tableRangement.RGM_LIBColumn) = value End Set End Property
Comment gérer les erreurs dans un DGV ??
Par avance merci et bonne journée
Bertrand
Partager