Löschen von Datensätzen

mikel

Aktiver Benutzer
Beiträge
38
Hallo zusammen,
habe mal wieder eine Frage an Euch.
Derzeit lösche ich in einem Formular bestimmte Datensätze einzeln mit einer Checkbox

Code:
Private Sub ckb_loeschen_Click()
DoCmd.SetWarnings False
    If ckb_loeschen Then
         Me.ckb_loeschen = 1
        If vbYes = MsgBox("Soll der Datensatz wirklich gelöscht werden?", vbYesNo, "Löschvorgang") Then
         DoCmd.RunCommand acCmdDeleteRecord
         MsgBox "Datensatz wurde erfolgreich gelöscht!", vbInformation
        
      Else
        Me.ckb_loeschen = 0
      End If
    End If
End Sub

Ist allerdings ein bisschen umständlich. Am liebsten würde ich zuerst die Datensätze markieren die ich löschen möchte und dan per button_click()
löschen die den wert 1 in der Checkbox aufweisen. Allerdings bin ich da ein bisschen Ratlos wie das gehen kann.

Kann mir da jemand helfen?
 
Werbung:
Voraussetzung:
Dein Formular muss mehrere DS anzeigen können und die müssen wahlfrei markierbar sein.
Schau mal, ob das geht. Dann weiter
 
Ich wollte noch einmal nachfragen zum löschen von Datensätzen im Endlosformular mit checkboxen.

Mometan habe ich folgenden VBA Code im Einsatz:
Code:
Private Sub Befehl5_Click()

  ' Zuerst Fragen ob das o.k. ist!
 If vbYes = MsgBox("Sind Sie sicher, dass Sie die Daten löschen wollen?", vbYesNo, "Daten löschen") Then
    CurrentDb.Execute "DELETE * FROM [tbl_brief] WHERE loeschen=true"
  Me.Requery
  Else
        Me.loeschen = 0
  End If
 
End Sub

Funktioniert soweit. Allerdings wenn ich 5 Datensätze markiere werden nur 4 gelöscht, das heißt ich mus den Löschworgang noch einmal anstoßen. Anwas kann das liegen?
 
Das liegt wahrscheinlich daran dass der letzte Datensatz den bei dem du die Checkbox gesetzt hast diesen Wert nicht zurück in die Tabelle geschrieben hat. Wenn dein Datensatzmarkierer vorne eingeblendet ist und noch den Stift anzeigt, hast du zwar den Hacken im Formular gesetzt aber die Tabelle weiss das noch nicht.
Entweder du setzt den Fokus zuerst auf einen anderen Datensatz oder du klickst vorne zumindest auf den Datensatzmarkierer, dann werden die Änderungen in die Tabelle geschrieben.
Dann wird er den letzten DS auch nicht unterschlagen.
 
Entweder du setzt den Fokus zuerst auf einen anderen Datensatz oder du klickst vorne zumindest auf den Datensatzmarkierer, dann werden die Änderungen in die Tabelle geschrieben.
:confused:

Und danach führst dein DELETE Statement aus.
Du kannst auch per VBA den Datensatz speichern. Wenn du z.B. vor deinem Currentdb.execute noch ein
DoCmd.RunCommand acCmdSaveRecord
aufrufst.
Eine Schleife hast du dabei ja nicht.
 
Werbung:
Zurück
Oben