DataGridView in Datenbank Aktualisierung Problemee

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    DataGridView in Datenbank Aktualisierung Problemee

    Hallo zusammen,
    ich hoffe, mir kann jemand helfen:

    ich habe ein DataGridView. Nun will ich wenn sich in diesem etwas eingeben wird, das die Datenbank aktualisiert wird. Mit dem Button funktioniert dies auch wunderbar, aber mit der Funktion "...CellValueChanged" geht es nicht. Es wird die Funktion aufgerufen, die neuen Werte stehen im DataTable, aber die Datenbank wird nicht aktualisiert

    Woran liegt das?


    PrivateSub DataGridView_Mitarbeiter_CellValueChanged(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView_Mitarbeiter.CellValueChanged
    Dim DataTable AsNew System.Data.DataTable
    DataTable = Me.DataGridView_Mitarbeiter.DataSource
    SQLUpdateDataTable(DataTable,
    "Select * From Mitarbeiter")

    PublicSub SQLUpdateDataTable(ByVal datatable AsDataTable, ByVal Query AsString)
    Dim con AsNewOleDbConnection
    Dim DataAdapter AsOleDbDataAdapter
    con.ConnectionString = FormMain.DatabaseServer & ";Data Source=" & FormMain.DatabaseDatabase
    DataAdapter =
    NewOleDbDataAdapter(Query, con)
    DataAdapter.SelectCommand.CommandType =
    CommandType.Text
    Dim cmb = NewOleDbCommandBuilder(DataAdapter) DataAdapter.Update(datatable) ' Datenbank aktualisieren EndSub
    das ist doch ühaupt keine gute Idee, bei jedem piepsePups einen Datenbank-Zugriff zu unternehmen.

    Dazu ist das Dataset doch da, dass dort deine Daten gehalten werden, wie in einem eingelesenen Dokument, und wenn du sie - vollkommen unabhängig von der DB - bearbeitet hast, drückst du iwann den "Save"-Button, und's werden alle Änderungen zurückgeschrieben.

    btw: dein code kannmanja kaum lesen. Bitte Code einstellen nach folgender Vorgehensweise: VB-Tag richtig benutzen

    Achso: Hier noch ein tut zur Vorgehensweise, wie ich sie jedermann empfehle: "Datenbank in 10 Minuten" auf Movie-Tuts (musste runterladen, entpacken, Main.doc enthält Links, die die Kapitel-Filme abfahren)
    Danke für den Tipp.

    Wenn ich aber trotzdem jedes mal aktualisieren will? Warum geht es bei mir mit dem DataGridView nicht?

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim DataTable As System.Data.DataTable
    3. DataTable = Me.DataGridView_Mitarbeiter.DataSource
    4. SQLUpdateDataTable(DataTable, "Select * From Mitarbeiter")
    5. End Sub
    gut - den VB-Tag-Button haste gefunden. Jetzt nurnoch VB-Tag richtig benutzen, dass deine eingestellten Codes auch korrekt eingerückt dargestellt werden.

    Beim gebundenen DGV befindet sich die Datasource (ich hoffe, du verwendest BindingSources) im Editiermodus, d.h.: sie schreibt nicht jede Wert-Änderung jeder Property gleich in die zugrundeliegende DataTable, sondern wartet, bis der User fertig ist. Das ist der Fall, wenner das DGV verläßt, um einen Button zu klicksen, oder wenner im DGV einen anneren Datensatz wählt.
    Intern wird dann bindingSource.EndEdit() aufgerufen, und die bs schreibt den Datensatz in die DataTable.

    lange rede kurzer sinn: rufe auch du .EndEdit() auf, wenn du sowas toll findest - meine Meinung dazu kennsteja ;) .
    Aber nochn Vergleich eingefallen: Word speichert ja auch nicht jeden Buchstaben einzeln ab, denn du in ein Dokument tippst.