Hallo,
ich habe in meiner "Sitzungsprotokoll-Datenbank" ein Unterformular, das die Teilnehmer anzeigt, als m:n-Relation, es gibt tblSitzung, tblTeilnehmer und tblTeilnehmerZuSitzung, auf letzterer basiert das Ufo.
Die Teilnehmer werden über ein Popup ausgewählt, per SQL eingefügt und dann das Ufo mit requery aktualisiert. Das funktioniert einwandfrei - bloß nicht bei neuen Datensätzen. Füge ich Datensatz 21 ein, speichere ihn, füge dann die Teilnehmer hinzu, zeigt er mir immer erst die von Datensatz 20 an. Trotz requery. Warum bloß?
Ergänzung, das Hauptformular befindet sich selbst als Unterformular in einem Navigationsformular von Access...
okay, das Einzige was hilft scheint zu sein
lngBookmark = Forms!frmNavigation!Navigationsunterformular.Form.ID
Forms!frmNavigation!Navigationsunterformular.Form.Recordset.MoveFirst
Forms!frmNavigation!Navigationsunterformular.Form.Recordset.FindFirst "ID = " & lngBookmark
irgendwie unschön, aber läuft...
Hallo Peter,
du liest die aktuelle ID aus, anschließend positionierst du wieder auf die gleich ID und das soll helfen?
Möglicherweise passt da etwas anderes noch nicht.
Gruß
Knobbi38
zwischendurch gehe ich ja noch zurück auf den ersten Datensatz. Ich weiß halt nicht, wie ich sonst das blöde Formular dazu bewegen soll, die Daten im Unterformular zu aktualisieren. was man sonst so findet über requery, me.dirty und ein paar andere Sachen ... nichts hilft.
Ich lehne mich mal ganz weit aus dem Fenster, aber da scheint mir etwas nicht ganz i.O. zu sein.
Zitat von: peter4400 am Februar 25, 2025, 14:19:47was man sonst so findet über requery, me.dirty und ein paar andere Sachen ... nichts hilft.
Du hast bei deinen Versuchen beachtet, dass, falls der Code im Hauptformular ist, du das Unterformular referenzieren musst?
Also:
Me.UnterformularSteuerelement.Form.Requery
Zitat von: PhilS am Februar 25, 2025, 17:45:02Du hast bei deinen Versuchen beachtet, dass, falls der Code im Hauptformular ist, du das Unterformular referenzieren musst?
So einfach ist die Syntax leider nicht, wenn man ein Navigationssteuerelement verwendet, die Zeile lautet:
Forms!frmNavigation!Navigationsunterformular.Form!frmAnwesend.Form.Requery
Und sie funktioniert ja, bei meinen Testdatensätzen 1-30.
Sie funktioniert bloß nicht mehr, wenn ich auf "Neuer Datensatz" gehe, diesen speichere, so dass er eine Autowert-ID, hat, und dann die Teilnehmer einfügen will.
Hallo Peter 4400,
Zitat von: peter4400 am Februar 25, 2025, 11:11:44lngBookmark = Forms!frmNavigation!Navigationsunterformular.Form.ID
Forms!frmNavigation!Navigationsunterformular.Form.Recordset.MoveFirst
Forms!frmNavigation!Navigationsunterformular.Form.Recordset.FindFirst "ID = " & lngBookmark
aus deinem Code kann ich leider nicht erkennen, ob deine Datensatzquelle für den Recordset eine Abfrage oder eine Tabelle ist. Du schreibst zwar, dass das UFO seine Datensatzquelle von Tabelle "tblTeilnehmerZuSitzung" bekommt, aber gleichzeitig schreibst du auch, dass du die Daten per SQL einfügst. Mit SQL kannst du die angezeigten Daten ja auch anpassen und dann ist es eine Abfrage. Bei Abfragen, so habe ich das aus einem Videokurs von Lorenz Hölscher auf Linkedin gelernt, muss bevor die Requery-Methode ausgeführt wird, erstmal zum letzten und dann zum ersten Datensatz gesprungen werden. Bei Tabellen brauchts das wohl nicht.
ja, guter Hinweis, Datenquelle ist ein Join aus tblTeilnehmer und tblTeilnehmerZuSitzung, weil ich ja die Namen anzeigen will und nicht nur die Fremdschlüssel-Long-Werte... aber trotzdem funktioniert die Requery-Methode ja, bloß leider nur *fast* immer