Guten Morgen,
ich habe mal wieder ein Problem.
Ich habe ein Endlosformular in dem über Kriterien nur Datensätze eines vorher ausgewählten Projektes angezeigt werden. Dieses Formular dient nur der Übersicht und es kann darin nicht bearbeitet werden. Nun möchte ich das sich bei Klick auf ein Textfeld innerhalb eines Datensatzes ein weiteres Endlosformular zur Bearbeitung mit den gleichen Datensätzen öffnet und der Fokus gleich auf dem gewählten Datensatz liegt.
Nach Recherche fand ich eine Lösung die auch zuerst prima funktioniert hat:
Dim curY As Currency
curY = Me.[ID_tbl_Arbeitsblatt]
DoCmd.OpenForm "frm_Arbeitsblatt3"
Forms!frm_Arbeitsblatt3.Recordset.FindFirst "ID_tbl_Arbeitsblatt=" & curY
Das geht aber nur solange ich in der zugrunde liegenden Tabelle nur ein Projekt habe.
Wurde ein zweites Projekt angelegt, wird zwar noch immer der gesuchte Datensatz im zweiten Endlosformular angezeigt, es erscheinen aber alle Datensätze aus der Tabelle. Das heißt, die Filterung ist irgendwie nicht mehr wirksam.
Wenn ich nur
DoCmd.OpenForm "frm_Arbeitsblatt3"
benutze, bleibt die Filterung bestehen.
Woran kann es liegen?
(Ich hoffe, ich habe mich verständlich ausgedrückt.
Zitat von: Bernd Sowa am Januar 10, 2025, 09:22:50Das heißt, die Filterung ist irgendwie nicht mehr wirksam.
Welche Filterung?
In dem von dir gezeigten Code ist keine Filterung vorhanden.
Du könntest bei
DoCmd.OpenForm in dem Argument
WhereCondition eine Filterbedingung mitgeben.
Hallo Phil,
In der Tabelle sind mehrere Projekte.
In einem Vorgeschalteten Formular wird ein Projekt gewählt das bearbeitet werden soll.
Dieses Kriterium wird an die Abfrage übergeben und dadurch wird halt nur dieses Projekt in der Übersicht angezeigt.
Starte ich nun über einen Button im Formularkopf das Bearbeitungsformular (frm_Arbeitsblatt3) ist alles gut und es wird nur das gewählte Projekt angezeigt.
DoCmd.OpenForm "frm_Arbeitsblatt3"
Allerdings springt er dann immer zum 1. Datensatz.
Möchte ich jedoch dass zu einem bestimmten Datensatz gesprungen wird (mit folgendem Code)
Dim curY As Currency
curY = Me.[ID_tbl_Arbeitsblatt]
DoCmd.OpenForm "frm_Arbeitsblatt3"
Forms!frm_Arbeitsblatt3.Recordset.FindFirst "ID_tbl_Arbeitsblatt=" & curY
öffne ich ja das gleiche Formular wie vorher mit der gleichen Filterung in der Abfrage aber plötzlich bekomme ich auch Datensätze aus den anderen Projekten angezeigt.
Das verstehe ich nicht...
Wie formuliere das mit Where bei OpenForm?
Das habe ich noch nie gemacht.
Zitat von: Bernd Sowa am Januar 10, 2025, 10:55:52öffne ich ja das gleiche Formular wie vorher mit der gleichen Filterung in der Abfrage aber plötzlich bekomme ich auch Datensätze aus den anderen Projekten angezeigt.
Das verstehe ich nicht...
Das verstehe ich auch nicht. Wenn die Abfrage gefiltert ist, ist es nicht möglich, dass ein Formular, das diese Abfrage als Datenherkunft nutzt, Daten anzeigt, die nicht dem Filter entsprechen. - Da muss bei diesem Teil der Funktionalität schon ein Fehler bestehen.
Zitat von: Bernd Sowa am Januar 10, 2025, 10:55:52Wie formuliere das mit Where bei OpenForm?
DoCmd.OpenForm "frm_Arbeitsblatt3" , , , "ProjektId= " & DeineProjectId
Hallo Bernd,
leider gibst du nicht an, wie das Formular mit deiner Abfrage geöffnet wird, bzw. wie du die gefilterte Abfrage mit deinem Formular zusammen bringst.
Aber grundsätzlich solltest du mal über deinen Workflow nachdenken. Aus dem Endlosformular heraus nochmal das gleiche Endlosformular in einem anderen Modus (Edit) aufzurufen, ist etwas unorthodox. Normalerweise werden DS per Dialogformular im Formularmodus editiert und nicht im Endlosformat.
Gruß
Knobbi38
Hallo Knobi,
ich gebe dir Recht. Grundsätzlich.
So hatte ich das ja auch ursprünglich mal.
Da die Anwender aber schnell viele verschiedene Datensätze bearbeiten müssen kam der Wunsch auf, ein Formular zu haben in dem mehrere Datensätze gleichzeitig zu sehen sind und auch schnell bearbeitet werden können.
Übrigens habe ich eine Lösung gefunden.
Wenn ich den Code mit einem Button im Kopffeld ausführe klappt es gut.
Ich darf den Befehl nicht aus dem Datensatz heraus ausführen. Dann kommt Access irgendwie durcheinander.
Danke sehr für eure Hilfe.
Hallo Bernd,
das ist vielleicht eine der wenigen Situationen, wo man ein "geteiltes" Formular sinnvoll einsetzen könnte. Ich würde jetzt nicht gerade das nehmen, was MS dafür vorgeschlagen hat, aber so etwas kann man relativ einfach mit einem Unterformular machen.
Gruß
Knobbi38