ConccurencyViolation

Piramyd Head27 Messages postés 31 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 28 mars 2014 - 27 août 2011 à 15:59
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 28 août 2011 à 09:47
Bonjour à tous,

Mon petit programme de généalogie commence a prendre forme, mon code pour me connecter, naviguer et ajouter des données à ma base fonctionne bien sauf pour une chose, une erreur de ConccurencyViolation....disons que la base est vide, je click sur ajouter un individu, puis entre mes données, puis je click sur enregistrer (update), puis je rentre disons 4 individu un apres l'autre sans probleme , les boutons de navigation fonctionne bien, mais disons que sur les quatre individu je suis sur le deuxieme, lorseque je click sur ajouter je peut évidement en ajouter un sans probleme sauf que quand je vien pour l'enregistrer (ma méthode Update au fait) c'est la que j'ai l'erreur et c'est surement pcq j'essais d'enregistrer l'individu 5 sur le 2 ?? non ?? Ce que je veux en fait c'est, avant la méthode update, vérifier sur quel row je suis et si je suis sur une row qui contient deja un individu je fait l'update sur la prochaine ligne vide x....comment procédé alors ??

Voila une portion de mon code:

Public Class Main
   
    Dim currentrow As Integer
    Dim MaxRows As Integer
    Dim con As New OleDb.OleDbConnection
    Dim dbProvider As String
    Dim dbSource As String
    Dim ds As New DataSet
    Dim da As OleDb.OleDbDataAdapter
    Dim sql As String

    Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


        dbProvider = "PROVIDER=Microsoft.ACE.OLEDB.12.0;"
        dbSource "Data Source C:\Users\Biggy\Documents\Visual Studio 2010\Projects\GenBase\GenBase\gen.accdb"

        con.ConnectionString = dbProvider & dbSource

        con.Open()
        MsgBox("BIENVENUE DANS GENBASE !" & vbCrLf & vbCrLf & "Une Base Modèle à été créé pour vous !" & vbCrLf & "Base de données connecter !" & vbCrLf & "Vous pouvez maintenant entrer vos données !" & vbCrLf & "Vous pourez réenregistrer cette Base sous un autre nom à partir du menu Fichier.")

        sql = "SELECT * FROM Individu"

        da = New OleDb.OleDbDataAdapter(sql, con)
        da.Fill(ds, "gen")

        currentrow = 0
        'con.Close()

        MaxRows = ds.Tables("gen").Rows.Count

    End Sub

    Private Sub NavigateRecords()

        Nom.Text = ds.Tables("gen").Rows(currentrow).Item(1)
        Prenom.Text = ds.Tables("gen").Rows(currentrow).Item(2)
        sexe.Text = ds.Tables("gen").Rows(currentrow).Item(3)
        datenai.Text = ds.Tables("gen").Rows(currentrow).Item(4)
        lieunai.Text = ds.Tables("gen").Rows(currentrow).Item(5)
        datedec.Text = ds.Tables("gen").Rows(currentrow).Item(6)
        lieudec.Text = ds.Tables("gen").Rows(currentrow).Item(7)
        prof.Text = ds.Tables("gen").Rows(currentrow).Item(8)
        cause.Text = ds.Tables("gen").Rows(currentrow).Item(9)
        pere.Text = ds.Tables("gen").Rows(currentrow).Item(10)
        mere.Text = ds.Tables("gen").Rows(currentrow).Item(11)
        nommar1.Text = ds.Tables("gen").Rows(currentrow).Item(12)
        prenommar1.Text = ds.Tables("gen").Rows(currentrow).Item(13)
        datemar1.Text = ds.Tables("gen").Rows(currentrow).Item(14)
        lieumar1.Text = ds.Tables("gen").Rows(currentrow).Item(15)
        nommar2.Text = ds.Tables("gen").Rows(currentrow).Item(16)
        prenommar2.Text = ds.Tables("gen").Rows(currentrow).Item(17)
        datemar2.Text = ds.Tables("gen").Rows(currentrow).Item(18)
        lieumar2.Text = ds.Tables("gen").Rows(currentrow).Item(19)
        nommar3.Text = ds.Tables("gen").Rows(currentrow).Item(20)
        prenommar3.Text = ds.Tables("gen").Rows(currentrow).Item(21)
        datemar3.Text = ds.Tables("gen").Rows(currentrow).Item(22)
        lieumar3.Text = ds.Tables("gen").Rows(currentrow).Item(23)


    End Sub

    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click

        If currentrow < ds.Tables("gen").Rows.Count - 1 Then
            currentrow += 1

            NavigateRecords()
        Else
            MsgBox("Dernier Individu de la Base !")
        End If

    End Sub

    Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click

        If currentrow > 0 Then
            currentrow -= 1

            NavigateRecords()

        ElseIf currentrow = 0 Then
            MsgBox("Premier Individu de la Base !")
        End If

    End Sub

    Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click

        currentrow = ds.Tables("gen").Rows.Count - 1
        NavigateRecords()

    End Sub

    Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click

        currentrow = 0
        NavigateRecords()


    End Sub

    Private Sub btnAddNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddNew.Click

        btnCommit.Enabled = True
        btnAddNew.Enabled = False
        btnDelete.Enabled = False

        Nom.Clear()
        Prenom.Clear()

    End Sub

    Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click

        btnCommit.Enabled = False
        btnAddNew.Enabled = True
        btnDelete.Enabled = True

        currentrow = 0
        NavigateRecords()

    End Sub

    Private Sub btnCommit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCommit.Click

 'Procédure Update (Enregistrer)
        If currentrow <> -1 Then

            Dim cb As New OleDb.OleDbCommandBuilder(da)
            Dim dsNewRow As DataRow

            dsNewRow = ds.Tables("gen").NewRow()

            dsNewRow.Item(1) = Nom.Text
            dsNewRow.Item(2) = Prenom.Text
            dsNewRow.Item(3) = sexe.Text
            dsNewRow.Item(4) = datenai.Text
            dsNewRow.Item(5) = lieunai.Text
            dsNewRow.Item(6) = datedec.Text
            dsNewRow.Item(7) = lieudec.Text
            dsNewRow.Item(8) = prof.Text
            dsNewRow.Item(9) = cause.Text
            dsNewRow.Item(10) = pere.Text
            dsNewRow.Item(11) = mere.Text
            dsNewRow.Item(12) = nommar1.Text
            dsNewRow.Item(13) = prenommar1.Text
            dsNewRow.Item(14) = datemar1.Text
            dsNewRow.Item(15) = lieumar1.Text
            dsNewRow.Item(16) = nommar2.Text
            dsNewRow.Item(17) = prenommar2.Text
            dsNewRow.Item(18) = datemar2.Text()
            dsNewRow.Item(19) = lieumar2.Text
            dsNewRow.Item(20) = nommar3.Text
            dsNewRow.Item(21) = prenommar3.Text
            dsNewRow.Item(22) = datemar3.Text()
            dsNewRow.Item(23) = lieumar3.Text


            ds.Tables("gen").Rows.Add(dsNewRow)


            ds.Tables("gen").Rows(currentrow).Item(1) = Nom.Text
            ds.Tables("gen").Rows(currentrow).Item(2) = Prenom.Text
            ds.Tables("gen").Rows(currentrow).Item(3) = sexe.Text
            ds.Tables("gen").Rows(currentrow).Item(4) = datenai.Text
            ds.Tables("gen").Rows(currentrow).Item(5) = lieunai.Text
            ds.Tables("gen").Rows(currentrow).Item(6) = datedec.Text
            ds.Tables("gen").Rows(currentrow).Item(7) = lieudec.Text
            ds.Tables("gen").Rows(currentrow).Item(8) = prof.Text
            ds.Tables("gen").Rows(currentrow).Item(9) = cause.Text
            ds.Tables("gen").Rows(currentrow).Item(10) = pere.Text
            ds.Tables("gen").Rows(currentrow).Item(11) = mere.Text
            ds.Tables("gen").Rows(currentrow).Item(12) = nommar1.Text
            ds.Tables("gen").Rows(currentrow).Item(13) = prenommar1.Text
            ds.Tables("gen").Rows(currentrow).Item(14) = datemar1.Text
            ds.Tables("gen").Rows(currentrow).Item(15) = lieumar1.Text
            ds.Tables("gen").Rows(currentrow).Item(16) = nommar2.Text
            ds.Tables("gen").Rows(currentrow).Item(17) = prenommar2.Text
            ds.Tables("gen").Rows(currentrow).Item(18) = datemar2.Text
            ds.Tables("gen").Rows(currentrow).Item(19) = lieumar2.Text
            ds.Tables("gen").Rows(currentrow).Item(20) = nommar3.Text
            ds.Tables("gen").Rows(currentrow).Item(21) = prenommar3.Text
            ds.Tables("gen").Rows(currentrow).Item(22) = datemar3.Text
            ds.Tables("gen").Rows(currentrow).Item(23) = lieumar3.Text


            da.Update(ds, "gen")  'Position de l'erreur ConccurencyViolation


            MsgBox("Individu Enregistrer avec succès !" & vbCrLf & "Mise à jour de la Base réussis !")
            currentrow = 0

            btnCommit.Enabled = False
            btnAddNew.Enabled = True
            btnDelete.Enabled = True
        End If

    End Sub

    Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click

        If MessageBox.Show("Voulez-vous vraiment effacer cette entrée ?", "Effacer", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.No Then

            MsgBox("Operation Annuler")
            Exit Sub

        End If

        Dim cb As New OleDb.OleDbCommandBuilder(da)

        ds.Tables("gen").Rows(currentrow).Delete()
        MaxRows = MaxRows - 1

        currentrow = 0
        NavigateRecords()
        da.Update(ds, "gen")

    End Sub

    Private Sub Nom_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Nom.TextChanged

        btnFirst.Enabled = True
        btnPrevious.Enabled = True
        btnNext.Enabled = True
        btnLast.Enabled = True
        btnCommit.Enabled = True
        btnAddNew.Enabled = True
        btnDelete.Enabled = True
        btnClear.Enabled = True

    End Sub


Merci d'avance !

3 réponses

Piramyd Head27 Messages postés 31 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 28 mars 2014
28 août 2011 à 01:56
Bon rien de nouveau mais je re-colle mon code que j'ai modifier et commenter, je vais essayer de pointer les points chauds.

Public Class Main
   
    Dim currentrow As Integer                       'Variable pour la ligne courante
    Dim MaxRows As Integer                          'Variable pour nombre de lignes
    Dim con As New OleDb.OleDbConnection            'Variable de connection a la base
    Dim dbProvider As String                        'Variable type de Base
    Dim dbSource As String                          'Variable chemin Base
    Dim ds As New DataSet                           'DataSet
    Dim da As OleDb.OleDbDataAdapter                'DataAdapter
    Dim sql As String                               'Requete

    Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'Definition du type de base
        dbProvider = "PROVIDER=Microsoft.ACE.OLEDB.12.0;"
        'Chemin de la base
        dbSource "Data Source C:\Users\Biggy\Documents\Visual Studio 2010\Projects\GenBase\GenBase\gen.accdb"
        'Connection
        con.ConnectionString = dbProvider & dbSource
        'Ouverture de la connection (base)
        con.Open()
        'Message de Bienvenue
        MsgBox("BIENVENUE DANS GENBASE !" & vbCrLf & vbCrLf & "Une Base Modèle à été créé pour vous !" & vbCrLf & "Base de données connecter !" & vbCrLf & "Vous pouvez maintenant entrer vos données !" & vbCrLf & "Vous pourez réenregistrer cette Base sous un autre nom à partir du menu Fichier.")
        'Requete SQL
        sql = "SELECT * FROM Individu"
        'Definition et commande de remplissage du DataAdapter
        da = New OleDb.OleDbDataAdapter(sql, con)
        da.Fill(ds, "gen")
        'Positionnement dans la base
        currentrow = 0
        'Definition du nombre de ligne dans la base
        MaxRows = ds.Tables("gen").Rows.Count

    End Sub

    Private Sub NavigateRecords()

        'Procedure de Naviguation dans la base (execute avec les boutons)

        'Changement des couleur de fond selon le sexe (M/Bleu, F/Rose, I/Vert)
        If ds.Tables("gen").Rows(currentrow).Item(3) = ("Féminin") Then
            TabPage1.BackColor = Color.Purple
            TabPage2.BackColor = Color.DarkBlue
        ElseIf ds.Tables("gen").Rows(currentrow).Item(3) = ("Masculin") Then
            TabPage1.BackColor = Color.DarkBlue
            TabPage2.BackColor = Color.Purple
        ElseIf ds.Tables("gen").Rows(currentrow).Item(3) = ("Inconnu") Then
            TabPage1.BackColor = Color.DarkGreen
            TabPage2.BackColor = Color.DarkGreen
        ElseIf sexe.Text = ("") Then
            sexe.Text = ("")
            TabPage1.BackColor = Color.DarkGreen
            TabPage2.BackColor = Color.DarkGreen
        End If

        'Insertion des champs et des ligne dans les controles

        'Individu
        Nom.Text = ds.Tables("gen").Rows(currentrow).Item(1)
        Prenom.Text = ds.Tables("gen").Rows(currentrow).Item(2)
        sexe.Text = ds.Tables("gen").Rows(currentrow).Item(3)
        datenai.Text = ds.Tables("gen").Rows(currentrow).Item(4)
        lieunai.Text = ds.Tables("gen").Rows(currentrow).Item(5)
        datedec.Text = ds.Tables("gen").Rows(currentrow).Item(6)
        lieudec.Text = ds.Tables("gen").Rows(currentrow).Item(7)
        prof.Text = ds.Tables("gen").Rows(currentrow).Item(8)
        cause.Text = ds.Tables("gen").Rows(currentrow).Item(9)
        pere.Text = ds.Tables("gen").Rows(currentrow).Item(10)
        mere.Text = ds.Tables("gen").Rows(currentrow).Item(11)
        'Unions
        nommar1.Text = ds.Tables("gen").Rows(currentrow).Item(12)
        prenommar1.Text = ds.Tables("gen").Rows(currentrow).Item(13)
        datemar1.Text = ds.Tables("gen").Rows(currentrow).Item(14)
        lieumar1.Text = ds.Tables("gen").Rows(currentrow).Item(15)
        nommar2.Text = ds.Tables("gen").Rows(currentrow).Item(16)
        prenommar2.Text = ds.Tables("gen").Rows(currentrow).Item(17)
        datemar2.Text = ds.Tables("gen").Rows(currentrow).Item(18)
        lieumar2.Text = ds.Tables("gen").Rows(currentrow).Item(19)
        nommar3.Text = ds.Tables("gen").Rows(currentrow).Item(20)
        prenommar3.Text = ds.Tables("gen").Rows(currentrow).Item(21)
        datemar3.Text = ds.Tables("gen").Rows(currentrow).Item(22)
        lieumar3.Text = ds.Tables("gen").Rows(currentrow).Item(23)
        'Enfants
        E1.Text = ds.Tables("gen").Rows(currentrow).Item(24)
        E2.Text = ds.Tables("gen").Rows(currentrow).Item(25)
        E3.Text = ds.Tables("gen").Rows(currentrow).Item(26)
        E4.Text = ds.Tables("gen").Rows(currentrow).Item(27)
        E5.Text = ds.Tables("gen").Rows(currentrow).Item(28)
        E6.Text = ds.Tables("gen").Rows(currentrow).Item(29)
        E7.Text = ds.Tables("gen").Rows(currentrow).Item(30)
        E8.Text = ds.Tables("gen").Rows(currentrow).Item(31)
        E9.Text = ds.Tables("gen").Rows(currentrow).Item(32)
        E10.Text = ds.Tables("gen").Rows(currentrow).Item(33)
        E11.Text = ds.Tables("gen").Rows(currentrow).Item(34)
        E12.Text = ds.Tables("gen").Rows(currentrow).Item(35)
        E13.Text = ds.Tables("gen").Rows(currentrow).Item(36)
        E14.Text = ds.Tables("gen").Rows(currentrow).Item(37)
        E15.Text = ds.Tables("gen").Rows(currentrow).Item(38)
        E16.Text = ds.Tables("gen").Rows(currentrow).Item(39)
        E17.Text = ds.Tables("gen").Rows(currentrow).Item(40)
        E18.Text = ds.Tables("gen").Rows(currentrow).Item(41)
        E19.Text = ds.Tables("gen").Rows(currentrow).Item(42)
        E20.Text = ds.Tables("gen").Rows(currentrow).Item(43)
        'A definir: procedure d'affichage pour enfant de union 2 (item 44 a 63) & union 3 (item 64 a 83)
                         Ici et plus bas a trois endroits (le meme commentaire) je doit implemeter un code que je décris plus bas
        'Notes
        historique.Text = ds.Tables("gen").Rows(currentrow).Item(84)
        RTFnote1.Text = ds.Tables("gen").Rows(currentrow).Item(85)
        RTFnote2.Text = ds.Tables("gen").Rows(currentrow).Item(86)
        RTFnote3.Text = ds.Tables("gen").Rows(currentrow).Item(87)
        RTFnote4.Text = ds.Tables("gen").Rows(currentrow).Item(88)
        RTFnote5.Text = ds.Tables("gen").Rows(currentrow).Item(89)
        RTFnote6.Text = ds.Tables("gen").Rows(currentrow).Item(90)
        RTFnote7.Text = ds.Tables("gen").Rows(currentrow).Item(91)
        RTFnote8.Text = ds.Tables("gen").Rows(currentrow).Item(92)
        RTFnote9.Text = ds.Tables("gen").Rows(currentrow).Item(93)
        RTFnote10.Text = ds.Tables("gen").Rows(currentrow).Item(94)


        'Insertion des unions (conjoints) dans le combobox de l'onglet Enfants
        unions.Items(0) = ds.Tables("gen").Rows(currentrow).Item(12) & " " & ds.Tables("gen").Rows(currentrow).Item(13)
        unions.Items(1) = ds.Tables("gen").Rows(currentrow).Item(16) & " " & ds.Tables("gen").Rows(currentrow).Item(17)
        unions.Items(2) = ds.Tables("gen").Rows(currentrow).Item(20) & " " & ds.Tables("gen").Rows(currentrow).Item(21)

    End Sub

    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click

        'Bouton Suivant

        'On verifie qu'il y aie toujours des donnees a afficher...
        If currentrow < ds.Tables("gen").Rows.Count - 1 Then
            currentrow += 1
            '...Puis on les affiche avec la procedure: 
            NavigateRecords()
        Else
            'Sinon on est au bout de la base....
            MsgBox("Dernier Individu de la Base !" & vbCrLf & ds.Tables("gen").Rows.Count & " " & "Individus dans la Base.")
        End If

    End Sub

    Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click

        'Bouton Precedent

        'On verifie qu'il y aie toujours des donnees a afficher...
        If currentrow > 0 Then
            currentrow -= 1
            '...Puis on les affiche avec la procedure: 
            NavigateRecords()
            'Sinon on est au debut de la base....
        ElseIf currentrow = 0 Then
            MsgBox("Premier Individu de la Base !")
        End If

    End Sub

    Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click

        'Bouton Dernier Individu

        'On verifie sur la derniere rangee (Rows.Count -1)
        currentrow = ds.Tables("gen").Rows.Count - 1
        'Puis on l'affiche avec la procedure:
        NavigateRecords()

    End Sub

    Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click

        'Bouton Premier Individu

        'On se place sur la premiere rangee
        currentrow = 0
        'Puis on l'affiche avec la procedure:
        NavigateRecords()


    End Sub

    Private Sub btnAddNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddNew.Click

        'Bouton Ajouter Individu

        'On choisi les bouton a afficher (permettre ou non le click)
        btnCommit.Enabled = True
        btnAddNew.Enabled = False
        btnDelete.Enabled = False

        'On vide les controles

        'Fiche Individu
        Nom.Clear()
        Prenom.Clear()
        sexe.Clear()
        datenai.Clear()
        lieunai.Clear()
        datedec.Clear()
        lieudec.Clear()
        prof.Clear()
        cause.Clear()
        pere.Clear()
        mere.Clear()

        'Fiche Unions
        nommar1.Clear()
        prenommar1.Clear()
        datemar1.Clear()
        lieumar1.Clear()
        nommar2.Clear()
        prenommar2.Clear()
        datemar2.Clear()
        lieumar2.Clear()
        nommar3.Clear()
        prenommar3.Clear()
        datemar3.Clear()
        lieumar3.Clear()
        unions.Items.Clear()

        'Fiche Enfants
        E1.Clear()
        E2.Clear()
        E3.Clear()
        E4.Clear()
        E5.Clear()
        E6.Clear()
        E7.Clear()
        E8.Clear()
        E9.Clear()
        E10.Clear()
        E11.Clear()
        E12.Clear()
        E13.Clear()
        E14.Clear()
        E15.Clear()
        E16.Clear()
        E17.Clear()
        E18.Clear()
        E19.Clear()
        E20.Clear()

        'Fiche Notes
        historique.Clear()
        RTFnote1.Clear()
        RTFnote2.Clear()
        RTFnote3.Clear()
        RTFnote4.Clear()
        RTFnote5.Clear()
        RTFnote6.Clear()
        RTFnote7.Clear()
        RTFnote8.Clear()
        RTFnote9.Clear()
        RTFnote10.Clear()

    End Sub

    Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click

        'Bouton Annuler

        'On choisi les bouton a afficher (permettre ou non le click)
        btnCommit.Enabled = False
        btnAddNew.Enabled = True
        btnDelete.Enabled = True

        'On se replace au debut
        currentrow = 0
        'On continue d'afficher les donnees avec la procedure:
        NavigateRecords()

    End Sub

    Private Sub btnCommit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCommit.Click

        'Bouton Enregistrer Individu (INSERT & UPDATE)

        If currentrow <> -1 Then

            Dim cb As New OleDb.OleDbCommandBuilder(da)
            Dim dsNewRow As DataRow

            dsNewRow = ds.Tables("gen").NewRow()

            'Fiche Individu
            dsNewRow.Item(1) = Nom.Text
            dsNewRow.Item(2) = Prenom.Text
            dsNewRow.Item(3) = sexe.Text
            dsNewRow.Item(4) = datenai.Text
            dsNewRow.Item(5) = lieunai.Text
            dsNewRow.Item(6) = datedec.Text
            dsNewRow.Item(7) = lieudec.Text
            dsNewRow.Item(8) = prof.Text
            dsNewRow.Item(9) = cause.Text
            dsNewRow.Item(10) = pere.Text
            dsNewRow.Item(11) = mere.Text

            'Fiche Unions
            dsNewRow.Item(12) = nommar1.Text
            dsNewRow.Item(13) = prenommar1.Text
            dsNewRow.Item(14) = datemar1.Text
            dsNewRow.Item(15) = lieumar1.Text
            dsNewRow.Item(16) = nommar2.Text
            dsNewRow.Item(17) = prenommar2.Text
            dsNewRow.Item(18) = datemar2.Text
            dsNewRow.Item(19) = lieumar2.Text
            dsNewRow.Item(20) = nommar3.Text
            dsNewRow.Item(21) = prenommar3.Text
            dsNewRow.Item(22) = datemar3.Text
            dsNewRow.Item(23) = lieumar3.Text

            'Fiche Enfants
            dsNewRow.Item(24) = E1.Text
            dsNewRow.Item(25) = E2.Text
            dsNewRow.Item(26) = E3.Text
            dsNewRow.Item(27) = E4.Text
            dsNewRow.Item(28) = E5.Text
            dsNewRow.Item(29) = E6.Text
            dsNewRow.Item(30) = E7.Text
            dsNewRow.Item(31) = E8.Text
            dsNewRow.Item(32) = E9.Text
            dsNewRow.Item(33) = E10.Text
            dsNewRow.Item(34) = E11.Text
            dsNewRow.Item(35) = E12.Text
            dsNewRow.Item(36) = E13.Text
            dsNewRow.Item(37) = E14.Text
            dsNewRow.Item(38) = E15.Text
            dsNewRow.Item(39) = E16.Text
            dsNewRow.Item(40) = E17.Text
            dsNewRow.Item(41) = E18.Text
            dsNewRow.Item(42) = E19.Text
            dsNewRow.Item(43) = E20.Text

            'A definir: procedure enregistrement pour enfant de union 2 (item 44 a 63) & union 3 (item 64 a 83)

            'Fiche Notes
            dsNewRow.Item(84) = historique.Text
            dsNewRow.Item(85) = RTFnote1.Text
            dsNewRow.Item(86) = RTFnote2.Text
            dsNewRow.Item(87) = RTFnote3.Text
            dsNewRow.Item(88) = RTFnote4.Text
            dsNewRow.Item(89) = RTFnote5.Text
            dsNewRow.Item(90) = RTFnote6.Text
            dsNewRow.Item(91) = RTFnote7.Text
            dsNewRow.Item(92) = RTFnote8.Text
            dsNewRow.Item(93) = RTFnote9.Text
            dsNewRow.Item(94) = RTFnote10.Text

            ds.Tables("gen").Rows.Add(dsNewRow)

            'Fiche Individu
            ds.Tables("gen").Rows(currentrow).Item(1) = Nom.Text
            ds.Tables("gen").Rows(currentrow).Item(2) = Prenom.Text
            ds.Tables("gen").Rows(currentrow).Item(3) = sexe.Text
            ds.Tables("gen").Rows(currentrow).Item(4) = datenai.Text
            ds.Tables("gen").Rows(currentrow).Item(5) = lieunai.Text
            ds.Tables("gen").Rows(currentrow).Item(6) = datedec.Text
            ds.Tables("gen").Rows(currentrow).Item(7) = lieudec.Text
            ds.Tables("gen").Rows(currentrow).Item(8) = prof.Text
            ds.Tables("gen").Rows(currentrow).Item(9) = cause.Text
            ds.Tables("gen").Rows(currentrow).Item(10) = pere.Text
            ds.Tables("gen").Rows(currentrow).Item(11) = mere.Text

            'Fiche Unions
            ds.Tables("gen").Rows(currentrow).Item(12) = nommar1.Text
            ds.Tables("gen").Rows(currentrow).Item(13) = prenommar1.Text
            ds.Tables("gen").Rows(currentrow).Item(14) = datemar1.Text
            ds.Tables("gen").Rows(currentrow).Item(15) = lieumar1.Text
            ds.Tables("gen").Rows(currentrow).Item(16) = nommar2.Text
            ds.Tables("gen").Rows(currentrow).Item(17) = prenommar2.Text
            ds.Tables("gen").Rows(currentrow).Item(18) = datemar2.Text
            ds.Tables("gen").Rows(currentrow).Item(19) = lieumar2.Text
            ds.Tables("gen").Rows(currentrow).Item(20) = nommar3.Text
            ds.Tables("gen").Rows(currentrow).Item(21) = prenommar3.Text
            ds.Tables("gen").Rows(currentrow).Item(22) = datemar3.Text
            ds.Tables("gen").Rows(currentrow).Item(23) = lieumar3.Text

            'Fiche Enfants
            ds.Tables("gen").Rows(currentrow).Item(24) = E1.Text
            ds.Tables("gen").Rows(currentrow).Item(25) = E2.Text
            ds.Tables("gen").Rows(currentrow).Item(26) = E3.Text
            ds.Tables("gen").Rows(currentrow).Item(27) = E4.Text
            ds.Tables("gen").Rows(currentrow).Item(28) = E5.Text
            ds.Tables("gen").Rows(currentrow).Item(29) = E6.Text
            ds.Tables("gen").Rows(currentrow).Item(30) = E7.Text
            ds.Tables("gen").Rows(currentrow).Item(31) = E8.Text
            ds.Tables("gen").Rows(currentrow).Item(32) = E9.Text
            ds.Tables("gen").Rows(currentrow).Item(33) = E10.Text
            ds.Tables("gen").Rows(currentrow).Item(34) = E11.Text
            ds.Tables("gen").Rows(currentrow).Item(35) = E12.Text
            ds.Tables("gen").Rows(currentrow).Item(36) = E13.Text
            ds.Tables("gen").Rows(currentrow).Item(37) = E14.Text
            ds.Tables("gen").Rows(currentrow).Item(38) = E15.Text
            ds.Tables("gen").Rows(currentrow).Item(39) = E16.Text
            ds.Tables("gen").Rows(currentrow).Item(40) = E17.Text
            ds.Tables("gen").Rows(currentrow).Item(41) = E18.Text
            ds.Tables("gen").Rows(currentrow).Item(42) = E19.Text
            ds.Tables("gen").Rows(currentrow).Item(43) = E20.Text

            'A definir: procedure enregistrement pour enfant de union 2 (item 44 a 63) & union 3 (item 64 a 83)

            'Fiche Notes
            ds.Tables("gen").Rows(currentrow).Item(84) = historique.Text
            ds.Tables("gen").Rows(currentrow).Item(85) = RTFnote1.Text
            ds.Tables("gen").Rows(currentrow).Item(86) = RTFnote2.Text
            ds.Tables("gen").Rows(currentrow).Item(87) = RTFnote3.Text
            ds.Tables("gen").Rows(currentrow).Item(88) = RTFnote4.Text
            ds.Tables("gen").Rows(currentrow).Item(89) = RTFnote5.Text
            ds.Tables("gen").Rows(currentrow).Item(90) = RTFnote6.Text
            ds.Tables("gen").Rows(currentrow).Item(91) = RTFnote7.Text
            ds.Tables("gen").Rows(currentrow).Item(92) = RTFnote8.Text
            ds.Tables("gen").Rows(currentrow).Item(93) = RTFnote9.Text
            ds.Tables("gen").Rows(currentrow).Item(94) = RTFnote10.Text

            'Mise a jour de la base
            da.Update(ds, "gen")  Ici: Erreur ConccurencyViolation
            'Message si succes de l'enregistrement
            MsgBox("Individu Enregistrer avec succès !" & vbCrLf & "Mise à jour de la Base réussis !" & vbCrLf & ds.Tables("gen").Rows.Count & " " & "Individus dans la base.")
            currentrow = 0

            btnCommit.Enabled = False
            btnAddNew.Enabled = True
            btnDelete.Enabled = True
        End If

    End Sub

    Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click

        'Bouton Effacer

        'Demande si on veux vraiment effacer l'entree
        If MessageBox.Show("Voulez-vous vraiment effacer cette entrée ?", "Effacer", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.No Then
            'Si NON...
            MsgBox("Operation Annuler")
            Exit Sub

        End If
        'Si OUI...
        Dim cb As New OleDb.OleDbCommandBuilder(da)
        'On efface la ligne en cours
        ds.Tables("gen").Rows(currentrow).Delete()
        MaxRows = MaxRows - 1
        'On reviens sur la position de depart
        currentrow = 0
        'Puis on continue de naviguer avec la procedure:
        NavigateRecords()
        'On met la base a jour
        da.Update(ds, "gen")

    End Sub

    Private Sub Nom_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Nom.TextChanged

        'Boutons a afficher si on met le curseur dans le controle Nom
        btnFirst.Enabled = True
        btnPrevious.Enabled = True
        btnNext.Enabled = True
        btnLast.Enabled = True
        btnCommit.Enabled = True
        btnAddNew.Enabled = True
        btnDelete.Enabled = True
        btnClear.Enabled = True

    End Sub

    Private Sub sexe_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sexe.TextChanged

        'Procedure pour changer la couleur de fond selon l'entree du sexe (M/Bleu, F/Rose, I/Vert)
        If sexe.Text = ("m") Then
            sexe.Text = ("Masculin")
            TabPage1.BackColor = Color.DarkBlue
            TabPage2.BackColor = Color.Purple
        ElseIf sexe.Text = ("f") Then
            sexe.Text = ("Féminin")
            TabPage1.BackColor = Color.Purple
            TabPage2.BackColor = Color.DarkBlue
        ElseIf sexe.Text = ("i") Then
            sexe.Text = ("Inconnu")
            TabPage1.BackColor = Color.DarkGreen
            TabPage2.BackColor = Color.DarkGreen
        ElseIf sexe.Text = ("") Then
            sexe.Text = ("")
            TabPage1.BackColor = Color.DarkGreen
            TabPage2.BackColor = Color.DarkGreen
        End If

    End Sub

    Private Sub ÀProposToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ÀProposToolStripMenuItem.Click
        'Montre la Form À Propos...
        about.Show()
    End Sub


Bon le code que je doit implémenter: dans ma base j'ai 60 champs réservé au enfants, mais sur ma form je n'ai que 20 textbox, j'ai au dessus un combobox ou les conjointe vont se tasser, je voudrais que si je selectionne la premiere conjointe (unions.Items(1)) je remplis les enfants puis il entre dans les 20 premiers champs, si je selectionne la deuxieme, tout les textbox enfants se clear, j'entre les enfants de la deuxieme conjointe puis je les insere dans les 20 autres champs suivants (index 44 a 63) et ainsi de suite.

en espérant que j'ai été clair

Merci Bien !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 août 2011 à 08:05
Bonjour,
Pour ne pas risquer de me faire appeler "M. jesaistout" comme tu l'as fait dans ton autre discussion, je vais me contenter de te dire qu'il s'agit vraisemblablement d'un problème de Clé primaire.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 août 2011 à 09:47
Tu éviterais probablement beaucoup de soucis en changeant ton fusil d'épaule. En alimentant par exemple ton nouveau row d'un seul coup. Pour ce faire :
- un tableau dynamique de la dimension totale requise
- exploitation de tes "tranches/textbox" ==>> alimentation, dans l'ordre, de ton tableau, par tranches également (en correspondance)
- alimentation de ton nouveau row d'un seul coup (par boucle sur ton tableau).
Mais bon .. A toui de vuir ..


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous