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
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
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
    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
2) Solution qui ne marche pas
Les textbox sont supprimées, l’ajout se fait dans le DGV
La fonction enregistrement reste la même

La fonction validation devient
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 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

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