Rubrik: Controls · MSFlexGrid/DataGrid | VB-Versionen: VB6 | 30.04.04 |
Alle selektierten Datensätze aus dem DataGrid löschen Hier zeigen wir Ihnen, wie sich alle selektierten Datensätze im Microsoft DataGrid Control löschen lassen. | ||
Autor: Dieter Otter | Bewertung: | Views: 21.721 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Immer wieder wird im Forum gefragt, wie man unter Verwendung des Microsoft DataGrid Controls alle selektierten Datensätze per Knopfdruck aus der Datenbank löschen kann. Des Rätsles Lösung lautet SelBookmark. Über diese Eigenschaft lassen sich alle aktuell selektierten Datenzeilen ermitteln. Jetzt braucht man nur noch den Recordset-Zeiger auf die "Bookmarks" zu bewegen und den Löschvorgang via "Delete"-Methode aufrufen.
Beginnen wir jedoch zunächst mit dem Füllen des DataGrids. Hierzu erstellen wir ein Connection- und ein Recordset-Objekt und weisen das Recordset dann dem DataGrid zu:
Option Explicit ' Datenbank-Connection + Recordset Objekt Dim oConn As ADODB.Connection Dim oRs As ADODB.Recordset
Private Sub Form_Load() ' Datenbank öffnen Set oConn = New ADODB.Connection With oConn .CursorLocation = adUseClient .Provider = "Microsoft.Jet.OLEDB.4.0" .Properties("Data Source") = App.Path & "\Datenbank.mdb" .Properties("Persist Security Info") = False .Open End With ' Recordset erstellen und öffnen Set oRs = New ADODB.Recordset oRs.Open "SELECT * FROM Kunden", oConn, _ adOpenStatic, adLockOptimistic ' DataGrid mit dem Inhalt des Recordsets füllen Set DataGrid1.DataSource = oRs End Sub
Per Buttonklick sollen alle selektierten Datensätze gelöscht werden:
Private Sub Command1_Click() Dim Bookmark As Variant With DataGrid1 ' alle selektierten Datenzeilen durchlaufen For Each Bookmark In .SelBookmarks .Bookmark = Bookmark ' Datensatz löschen oRs.Delete adAffectCurrent Next End With End Sub
Das war's dann auch schon.
Sollten Sie anstelle eines ADO-Recordsets ein DataControl verwenden, ersetzen Sie...
oRs.Delete adAffectCurrent
durch:
Adodc1.Recordset.Delete adAffectCurrent