Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Bernd Sowa am Januar 10, 2025, 09:22:50

Titel: Endlosformular öffnen und zu bestimmten Datensatz springen.
Beitrag von: Bernd Sowa am Januar 10, 2025, 09:22:50
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.
Titel: Re: Endlosformular öffnen und zu bestimmten Datensatz springen.
Beitrag von: PhilS am Januar 10, 2025, 10:33:42
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.
Titel: Re: Endlosformular öffnen und zu bestimmten Datensatz springen.
Beitrag von: Bernd Sowa am Januar 10, 2025, 10:55:52
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.
Titel: Re: Endlosformular öffnen und zu bestimmten Datensatz springen.
Beitrag von: PhilS am Januar 10, 2025, 11:19:25
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
Titel: Re: Endlosformular öffnen und zu bestimmten Datensatz springen.
Beitrag von: Knobbi38 am Januar 10, 2025, 11:32:05
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
Titel: Re: Endlosformular öffnen und zu bestimmten Datensatz springen.
Beitrag von: Bernd Sowa am Januar 10, 2025, 13:10:15
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.
Titel: Re: Endlosformular öffnen und zu bestimmten Datensatz springen.
Beitrag von: Knobbi38 am Januar 10, 2025, 15:04:18
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