Liebe Access-Experten,
seit gestern quäle ich mich (Anfänger) erfolglos mit dem schon oft behandelten Problem, nach einem Requery auf den zuletzt aktiven Datensatz zurückzukommen (im Formular mit 2 Registerblättern für Tabellen- und Einzeldatensatzansicht). Habe endlos gesucht und versucht, die hier und u. z. B. bei DonKarl empfohlene Methode (FindFirst und Bookmark) zu realisieren. Es will einfach nicht funktionieren. Ich lande immer wieder bei Satz 1. Vielleicht kann mir jemand auf die Sprünge helfen. Vermutlich stimmt mit dem Befehl Me.Frm_Qry_GesamtDaten_Tbl.Form.Bookmark = rs.Bookmark irgendetwas nicht (s. beiligender Code). Die Zeile wird auch angesprochen, bewirkt aber nicht das Gewünschte.
Me![Chb_Verworfen1] zeigt im Formular an, ob in der Tabelle "Verworfen" True oder False ist.
Seltsamerweise hat in einer früheren Programmversion das Requery auf die Checkbox funktioniert, ohne das auf Datensatz 1 gesprungen wurde. Woran das liegt ist mir unklar.
Vielen Dank im Voraus
Private Sub Cmd_SatzZurueck1_Click()
' soll Löschmarkierung aus Tabelle auf False setzen und in einer anderen Tabelle korrespondierenden
' Datensatz löschen
Dim SatzNr As Long
'On Error GoTo Err_Cmd_SatzZurueck1_Click
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb()
' im Registerblatt mit Tabellenansicht angezeigter Datensatz: Satz-ID der Tabelle abfragen
SatzNr = Me.Frm_Qry_GesamtDaten_Tbl.Form.ID
' auf Ursprungstabelle zugreifen
Set rs = db.OpenRecordset("Tbl_Gesamtdaten", dbOpenDynaset)
rs.FindFirst "ID= " & SatzNr ' zum Datensatz mit der betreffenden ID springen
rs.Edit
rs!Verworfen = False ' Häkchen im TabellenFeld Verworfen entfernen
rs.Update
'auf Tabelle mit Infos zu DAtensätzen mit Löschmarkierung zugreifen
Set rs = db.OpenRecordset("Tbl_Verworfen", dbOpenDynaset)
rs.FindFirst "ID_Daten= " & SatzNr ' zum DAtensatz mit der betreffenden Fremd-ID springen
rs.Delete 'Satz löschen
' Schalter ausgrauen/aktivieren und Formular-Checkbox neu abfragen
Me!Cmd_VerwerfenMain.Enabled = True
Me!Cmd_SatzZurueck1.Enabled = 0
Me![Chb_Verworfen1].Requery ' springt zum ersten Satz in der Datenquell (beide Registerblätter)
'zurück zum Satz mit ID = SatzNr.....
Set rs = Me!Frm_Qry_GesamtDaten_Tbl.Form.RecordsetClone
rs.FindFirst "ID = " & SatzNr
If rs.NoMatch Then ' zu Testzwecken
MsgBox "Nicht gefunden = " & SatzNr 'trifft nie zu
Else
Me.Frm_Qry_GesamtDaten_Tbl.Form.Bookmark = rs.Bookmark
'bewirkt keinen Rücksprung zu SatzNr
End If
Set db = Nothing
Set rs = Nothing
Exit_Cmd_SatzZurueck1_Click:
Exit Sub
Err_Cmd_SatzZurueck1_Click:
MsgBox Err.Description
Resume Exit_Cmd_SatzZurueck1_Click
End Sub
Weiteres Probieren hat ergeben: Wenn ich Requery weglasse und stattdessen mit der Maus in den Detailbereich des Formulars außerhalb von Controls klicke, wird die Chkbox aktualisiert (und die daran hängende bedingte Formatierung umgesetzt) und der Datensatz nicht verlassen - so sollte es sein! Wenn ich wüsste, wie man das per VBA umsetzt, wäre mir geholfen. Versuche mit SetFocus haben bislang nichts gebracht.
Beste Grüße
Hi,
vielleicht genügt ja auch Me.Frm_Qry_GesamtDaten_Tbl.Form.Refresh