La simultanéité de la violation: le UpdateCommand touchées 0 de l'1 records

J'ai une simple base de données mdb mis en place dans Visual Basic Express Edition (winforms) et je suis en train de mettre à jour les données à partir d'un datagridview à une base de données. J'ai databinded les zones de texte pour les colonnes que je veux dans la datagridview et cela fonctionne très bien.

Après quelques difficultés, j'ai enfin réussi à avoir les valeurs mises à jour dans chaque ligne de la base de données. Mais, en essayant de modifier un enregistrement récemment créé génère cette erreur: "la Simultanéité de la violation: le UpdateCommand touchées 0 de l'1 dossiers"

Je veux dire, il me semble que l'erreur se produit uniquement avec des lignes créées. Parce que la fermeture de l'application et de le rouvrir tout de suite, je suis autorisé à mettre à jour les valeurs des cellules.
J'ai aussi remarqué que l'ID de la ligne est réglé à "-1" quand je viens de créer une nouvelle ligne. Les autres lignes n'ont pas un nombre négatif pour ID. Cela pourrait-il être la cause? Semble comme si la ligne n'est pas vraiment à jour de la base de données.

Donc, c'est le code pour le AddRow bouton

Dim newRow As MusicDBDataSet.SongsRow
        newRow = MusicDBDataSet.Songs.NewSongsRow()
        newRow.Name = txtBoxNewName.Text
        newRow.Genre = txtBoxNewGenre.Text
        newRow.Rhytm = txtBoxNewRhytm.Text
        newRow.Length = txtBoxNewLength.Text
        MusicDBDataSet.Songs.Rows.Add(newRow)

        Try
            Me.Validate()
            Me.SongsTableAdapter.Update(Me.MusicDBDataSet.Songs)
            Me.SongsBindingSource.EndEdit()
            Me.MusicDBDataSet.Songs.AcceptChanges()

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

Cela remplit les données que j'ai mis dans les boîtes de texte dans une nouvelle ligne de la DataGridView.
Tout semble parfait (sauf pour le -1 de la valeur de la colonne ID)

Les zones de texte qui sont databinded à la base de données, ce sont ceux que j'utilise pour essayer de mettre à jour les valeurs des cellules.
Et le code ressemble à ceci:

Try
    Me.Validate()
    Me.SongsBindingSource.EndEdit()
    Me.SongsTableAdapter.Update(Me.MusicDBDataSet.Songs)
    Me.MusicDBDataSet.Songs.AcceptChanges()

Catch ex As Exception
    MsgBox(ex.Message)
End Try

Maintenant, je ne suis pas sûr du tout si c'est la bonne façon de le faire.
Mais la réflexion à ce sujet, les zones de texte utilisé pour mettre à jour les valeurs de la création de la ligne sont databinded à la base de données ou de tableadapter lui-même droit? Se pourrait-il que le UpdateCommand échoue car la ligne n'a pas vraiment été créé correctement?

Votre projet est-il une application winforms?
Salut, oui c'est winforms. Et j'ai mis à jour le premier post, donc ça explique un peu mieux ce qu'est le problème. Aussi, l'ensemble du scénario a changé un peu depuis que j'ai créé ce fil de discussion. 🙂
Mon dieu, simplement résolu le problème. J'avais besoin d'utiliser la méthode de Remplissage pour que cela fonctionne.. Comme ceci: Moi.SongsTableAdapter.De Remplissage(De Moi.MusicDBDataSet.Les chansons)

OriginalL'auteur Kenny Bones | 2009-08-08