Problème d'enregistrement de données dans la base de données Access

Signaler
-
vb95
Messages postés
2099
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
2 avril 2020
-
Bonjour,

avec ce code ci-dessous, lorsque j'execute ça me renvoie un message genre " ce matricule existe déjà ", même si j'ai inséré un nouveau matricule dans le champ CmbMATRICULE,

merci pour votre aide

'Pour enregistrer les nouvelles données

Private Sub BtnENREGISTRER_Click(sender As Object, e As EventArgs) Handles BtnENREGISTRER.Click
        If CmbMATRICULE.Text = Nothing Then
            MsgBox("Vous devez definir un matricule !", MsgBoxStyle.Exclamation, "MATRICULE VIDE")
            Exit Sub
        End If

        Dim Jm As Integer
        Jm = 0
        For S = 0 To Me.DataGridView1.RowCount - 2
            If CmbMATRICULE.Text = Me.DataGridView1.Item(0, S).Value Then
                Jm = 1
            End If
        Next

        Try
            cn.Open()
            cmd.Connection = cn
            cmd.CommandText = "insert  into TBrecrus(Matricule,Nom,Postnom,Prenom,Sexe,LieuN,DateN,Photo) values ('" & CmbMATRICULE.Text & "','" & TxtNOM.Text & "','" & TxtPOSTNOM.Text & "','" & TxtPRENOM.Text & "','" & CmbSEXE.Text & "','" & CmbETATCIVIL.Text & "','" & Datepicker1.Value & "','" & CmbAGE.Text & "','" & CmbTAILLE.Text & "','" & CmbMOEURS.Text & "','" & CmbETUDESFAITES.Text & "','" & CmbPROVINCE.Text & "','" & CmbTERRITOIRE.Text & "','" & CmbSECTEUR.Text & "','" & TxtNOMPERE.Text & "','" & TxtNOMMERE.Text & "','" & PictureBox1.ImageLocation & "')"
            cmd.ExecuteNonQuery()
            cn.Close()
            MessageBox.Show("Enregistré ", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information)
            ListSoldat("Select * From TBrecrus")
            Annuler()
            ListSoldat("Select * From TBrecrus")
        Catch MATR As Exception
            MessageBox.Show(" Ce matricule existe", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
            CmbMATRICULE.Focus()
        End Try
        cn.Close()
    End Sub

1 réponse

Messages postés
2099
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
2 avril 2020
89
Bonjour
Le Try Catch ne sert pas à voir si un matricule est déjà enregistré .
il sert uniquement en cas d'erreur dans ton code .
il faut que tu l'enlèves pour trouver l'erreur en déboguant en pas à pas

De plus quelle est l'utilité de ce bout de code ? Je pense qu'il doit parcourir tous les enregistrements pour vérifier si ce matricule existe déjà .
Dim Jm As Integer
Jm = 0
For S = 0 To Me.DataGridView1.RowCount - 2
     If CmbMATRICULE.Text = Me.DataGridView1.Item(0, S).Value Then
          Jm = 1
     End If
Next


Et ici
ListSoldat("Select * From TBrecrus")
Annuler()
ListSoldat("Select * From TBrecrus")


A quoi sert Annuler et pourquoi faire 2 fois
ListSoldat("Select * From TBrecrus")