Fehler bei DGV Update

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Edwardschn.

    Fehler bei DGV Update

    Hallo Leute,

    ich habe heute das erste mal mit dem Designer gearbeitet um eine Datenbank mit
    einem DGV zu verbinden und so eine Pflege von Stammdaten zu realisieren.

    Die Verbindung steht soweit und die Daten werden auch korrekt aus der Datenbank ausgelesen.
    Wenn ich einen neuen Datensatz hinzufüge wird der auch korrekt in die Datenbank übernommen.

    Sobald ich aber versuche einen bestehenden Datensatz abzuändern, oder ein vorher leeres Feld in
    einem Datensatz erstmals zu befüllen, meckert er, dass er ein ordentliches UpdateCommand haben will.

    Was ich gemacht habe bisher:

    Ich habe auf der MSDN-Seite alles nach dem Codebeispiel gemacht.

    VB.NET-Quellcode

    1. Private Sub submitButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles submitButton.Click
    2. ' Update the database with the user's changes.
    3. Me.dataAdapter.Update(CType(Me.bindingSource1.DataSource, DataTable)) End Sub


    Nur hat der mir dann erstens das mit dem CType(...) angemeckert, sodass ich nur das DataSet angegeben habe.
    Das ist auch laut den Varianten der Updatefunktion zu machen.
    InvalidOperationException wurde nicht behandelt.
    Aktualisieren erfordert einen gültigen UpdateCommand, wenn eine DataRow-Auflistung mit modifizierten Zeilen weitergegeben wird.
    Nun frag ich mich, was der jetzt von mir genau will und wie ich das UpdateCommand mitgeben soll.

    Kann mir da jemand helfen?

    So sieht im Moment mein Code aus:

    VB.NET-Quellcode

    1. Public Class frmFrz_Sped
    2. Private Sub frmFrz_Sped_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. 'TODO: Diese Codezeile lädt Daten in die Tabelle "DataSet_Frz_Sped.FRZ_SPED". Sie können sie bei Bedarf verschieben oder entfernen.
    4. Me.FRZ_SPEDTableAdapter.Fill(Me.DataSet_Frz_Sped.FRZ_SPED)
    5. End Sub
    6. Private Sub btSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btSubmit.Click
    7. ' Update vom DGV zur DB
    8. Me.FRZ_SPEDTableAdapter.Update(Me.DataSet_Frz_Sped.FRZ_SPED) ' <- dort kommt der Fehler aus dem oberen Zitat
    9. End Sub
    10. End Class



    Gruß

    Karl
    Hallo Karl,

    bevor Du die Fill Methode aufrufst, gibt es doch bestimmt noch ander Codezeilen?

    Bevor diu die Update Methode aufruft, muss es mindestens irgendwo einen Commandbuilder geben.

    Aber unabhängig davon, es sieht einfach so aus als müsstest du nochmal eine Runde drehen, was die Basics angeht
    Hallo Edward,

    erstmal danke für deine Antwort.

    Ich hab vorher immer das per Hand zu Fuß gemacht und dann aus dem DaaSet ins DGV geladen.
    Jetzt ist mir durch intensives Forenlesen halt immer wieder das mit dem Designer aufgefallen.

    UNd ich wollte das nun damit versuchen. Außerdem ist das vom eigenen Codeaufwand ja sicher weniger
    zu machen.

    Ich hab dann über:
    msdn.microsoft.com/de-de/library/fbk67b6z.aspx#Y684

    und

    msdn.microsoft.com/de-de/library/33w255ac%28v=VS.100%29.aspx

    versucht das zu realisieren.
    @Ra3L

    Auf der Seite gibt es diese CodeZeile
    SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);

    Wo ist die bei dir?
    ICh hab nicht vor an deinem gesamten Code rumzukritisieren, um dir dann die eigntliche Antwort zu verweigern. Aber ich kann nur von dem ausgehen, was du als Codegerüst hiereinstellst.
    Der Comanbuilder generiert die UPdateComands, InsertComands, wenn der nicht dabei ist dann könnte das der Grund sein für die ErrorMEsssage.
    Kannst mir auch per PN Schicken