Elite Veteran
Beiträge: 866
Ort: Wien | Hallo, Günther!
grundguenther - 13.12.12
Die gängige Aufgabenstellung per VBA in einem Formular zu einen bestimmten Datensatz zu springen (z.B. nach einen Requery zum vorher aktuellen Datensatz), wird üblicherweise wie folgt gelöst (siehe auch Don Karl FAQ 4.5):
AktID = Me.MyID
Me.Requery
Me.RecordsetClone.FindFirst "MyID=" & AktID
Me.Bookmark = Me.RecordsetClone.Bookmark
Daneben gibt es kürzere Varianten, die genauso zu funktionieren scheinen:
Folgende Variante "verzichtet" auf das RecordsetClone und die Bookmarks:
AktID = Me.MyID
Me.Requery
Me.Recordset.FindFirst "MyID=" & AktID
Folgende Variante "verzichtet" auf das RecordsetClone und Findfirst:
AktBM = Me.Bookmark
Me.Requery
Me.Bookmark = AktBM
Meine Frage wäre nun: Wo ist der Haken bei den kürzeren Varianten. Es hat ja bestimmt einen Grund, warum Don Karl die erste weitergibt!
Ich persönlich gebe seit einigen Jahren in etlichen Newsgroup- und Forenbeiträgen fast immer die zweite von dir genannte Variante weiter.
In der FAQ steht noch die Variante aus den 90er-Jahren als das Formular-Recordset noch nicht direkt ansprechbar war und man den Clone verwenden musste. Der Vorteil dieser Clone-Variante ist, dass sie in allen Access-Versionen funktioniert, das Recordset erst ab Access 2000.
Bis vor relativ kurzer Zeit waren Access97-Anwendungen noch recht verbreitet, inzwischen sind sie sicher seltener. Ich warte bei solchen Dingen immer gerne ein paar Jährchen bevor ich sie durch hypermoderne Dinge ersetze. Werde es aber bald mal tun.
Der dritten Methode würde ich nicht trauen, weil sie einen Fehler produziert, wenn das Lesezeichen nimmer da ist, weil der DS im Code oder sonstwie gelöscht wurde. Me.Recordset.FindFirst hingegen wechselt dann einfach nicht den DS und fertig.
----- Servus
Karl
*********
Access-Entwickler-Konferenz: https://www.donkarl.com/?aek - Jetzt anmelden für 19./20.10. in Nürnberg
Access DevCon Vienna: https://www.donkarl.com/devcon
Access Forever: https://www.accessforever.org
Access News: https://www.youtube.com/playlist?list=PLVCeBbJIMDvdJ8ghMbEakJ6_EQyvy... |