Probleme mit DataGridView und Access DB

  • VB.NET

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

    Probleme mit DataGridView und Access DB

    Hi Leute,

    ich habe ein kleines Problem mit meinem Tool. Es ist denke ich recht simple, nur leider bin ich nach mehreren (verschiedenen) versuchen nicht auf eine gängige lösung gekommen.

    Ich versuche den Datensatz der im DataGridView ausgewählt wurde in der Access db(.mdb) zu löschen.

    Hier mein Code:

    VB.NET-Quellcode

    1. Public Function DBlöschen1()
    2. db_ole_prg.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Pfad & "\db_objektverwaltung.mdb"
    3. db_ole_prg.Open()
    4. myDataSet.Clear()
    5. Dim i As Integer
    6. Dim d As New DataGridView
    7. d = Me.DataGridView1
    8. i = d.CurrentRow.Index
    9. myOleDbDeleteCommand.Connection = db_ole_prg
    10. myOleDbDeleteCommand.CommandText = "Delete * From OV WHERE ID = " & DataGridView1.Item(0, i).Value.ToString
    11. 'DataAdapter mit dem SelectCommand verbinden
    12. myOleDbDataAdapter.DeleteCommand = myOleDbDeleteCommand
    13. 'und mit dem DataAdapter das DataSet füllen
    14. myOleDbDataAdapter.Fill(myDataSet, "OV")
    15. 'Daten an das DataGridView binden
    16. DataGridView1.DataSource = myDataSet
    17. DataGridView1.DataMember = "OV"
    18. db_ole_prg.Close()
    19. End Function


    und so wird das DataGridView gefüllt:

    VB.NET-Quellcode

    1. Public Function DBanzeigen()
    2. db_ole_prg.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Pfad & "\db_objektverwaltung.mdb"
    3. db_ole_prg.Open()
    4. myDataSet.Clear()
    5. myOleDbSelectCommand.Connection = db_ole_prg
    6. myOleDbSelectCommand.CommandText = "Select * From OV"
    7. ' DataAdapter mit dem SelectCommand verbinden
    8. myOleDbDataAdapter.SelectCommand = myOleDbSelectCommand
    9. ' und mit dem DataAdapter das DataSet füllen
    10. myOleDbDataAdapter.Fill(myDataSet, "OV")
    11. '' Daten an das DataGridView binden
    12. DataGridView1.DataSource = myDataSet
    13. DataGridView1.DataMember = "OV"
    14. db_ole_prg.Close()
    15. End Function


    Als Fehlermeldung beim ausführen von DBlöschen() erhalte ich:

    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.


    Scheint mir als könnte ich nicht ohne weiteres aus meinem DataGridView lesen, oder?

    Aber wieso?


    Bin für jede Hilfe dankbar.


    Viele Grüße

    Weedl

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „weedl89“ ()

    weedl89 schrieb:

    Ich versuche den Datensatz der im DataGridView ausgewählt wurde in der Access db(.mdb) löschen.

    Du musst ihn nur aussm Dataset löschen, und dann alle Änderungen des Datasets abspeichern.
    Aussm Dataset löschen ist sehr einfach, einfach im Datagridview die ganze Zeile selectieren und Entf drücken.

    Änderungen abspeichern geht so:

    VB.NET-Quellcode

    1. myOleDbDataAdapter.Update(myDataSet)
    Nichts weiter. Kein Command anfügen oder sonst irgendwas basteln.
    ich habe es jetzt so eingebunden:

    Public Function DBlöschen3()

    myOleDbDataAdapter.Update(myDataSet)

    End Function


    wenn ich die funktion, nach dem ich das item gelöscht habe aufrufe, bekomme ich leider die fehlermeldung:

    Aktualisieren: TableMapping['Table'] oder DataTable 'Table' kann nicht gefunden werden

    woran kann das liegen?
    achnee - sorry.
    ich hab dein Dataset für ein typisiertes Dataset gehalten, und den DataAdapter ebenfalls für typisiert. Sind sie aber nicht.
    Annersrum - zu dem untypisierten Crap kann ich keine hilfreichere Aussage machen, als dass mans lassen soll.

    vlt. kannichdich für den typisierten Zugang zur Datenbänkerei interessieren? "Datenbank in 10 Minuten" auf Movie-Tuts

    Damit stehen einem allerlei Möglichkeiten offen, die einem bei untypisiertem Gewurstel verschlossen bleiben: vier Views
    Problem gelöst mit:

    VB.NET-Quellcode

    1. Public Function DBlöschen1()
    2. ' This is our DELETE Statement. To be sure we delete the correct record and not all of
    3. ' them.
    4. ' We use the WHERE to be sure only that record that the user has selected is deleted.
    5. Dim sqldelete As String
    6. sqldelete = "DELETE * FROM OV WHERE ID=" & DataGridView1.CurrentRow.Cells(0).Value & ""
    7. ' This is our DataAdapter. This executes our SQL Statement above against the Database
    8. ' we defined in the Connection String
    9. Dim adapter As New OleDbDataAdapter(sqldelete, con1)
    10. ' Gets the records from the table and fills our adapter with those.
    11. Dim dt As New DataTable("OV")
    12. adapter.Fill(dt)
    13. ' Assigns the edited DataSource on the DataGridView and the refreshes the
    14. ' view to ensure everything is up to date in real time.
    15. DataGridView1.DataSource = dt
    16. Refresh()
    17. End Function




    ich habe es nur mit einem selected item probiert, ich denke mit mehreren selected items muss es etwas umgebaut werden.

    ich hoffe es hilft.

    Viele Grüße

    Weedl