window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Detailformular öffnen und abfragen

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Wenn Sie von einem übersichtsformular oder einem Listenfeld- oder Kombinationsfeld eines Formulars ein Detailformular öffnen, um einen der Datensätze aus der übersicht oder einer Liste im Detail anzuzeigen, lässt sich das mit einem Einzeiler programmieren. Kniffliger wird es, wenn Sie in dem Detailformular änderungen vornehmen oder gar einen anderen Datensatz auswählen und die änderungen oder die Auswahl in das aufrufende Formular übernehmen wollen. Wir stellen zwei Techniken vor – die gängige und eine nicht so oft verwendete, aber grundsätzlich bessere Technik.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1705_Handyverwaltung.accdb.

Beispiel

Wir wollen uns am Beispiel der Formular frmSIMKarten und frmVertragsdetails der Beispieldatenbank Handyverwaltung ansehen, wie Sie die Detaildaten zu einem Datensatz in einem Kombinationsfeld des Formulars frmSIMKarten per Doppelklick im Formular frmVertragsdetails öffnen (siehe Bild 1).

Beispiel für das Aufrufen eines Detailformulars

Bild 1: Beispiel für das Aufrufen eines Detailformulars

Hier gibt es nun im Detailformular die Möglichkeit, einen anderen Datensatz, also einen anderen Vertrag, auszuwählen. Die Auswahl in diesem Formular soll dann beim Schließen in das aufrufende Formular übernommen werden – gegebenenfalls auch erst nach Rückfrage an den Benutzer, da dieser sich möglicherweise nicht im Klaren darüber ist, dass er damit auch den Eintrag im Kombinationsfeld manipuliert.

Herkömmliche Technik

Normalerweise würden Sie, wenn Sie wie hier per Doppelklick auf ein Kombinationsfeld von einem Formular aus ein Detailformular öffnen, eine bewährte Vorgehensweise nutzen.

Damit wir die Originalformulare der Beispieldatenbank nicht bearbeiten müssen, haben wir die beiden Formulare unter den Namen frmSIMKarten_Herkoemmlich und frmVertragsdetails_Herkoemmlich kopiert.

Die Vorgehensweise sieht so aus, dass wir beim Doppelklick auf das Kombinationsfeld das Formular frmVertragsdetails_Herkoemmlich als modalen Dialog öffnen.

Die beiden Schaltflächen cmdSpeichern und cmdVerwerfen statten wir dabei mit entsprechenden Funktionen aus: cmdSpeichern speichert den Datensatz und macht das Formular dann unsichtbar. cmdVerwerfen verwirft die änderungen und schließt das Formular.

Warum Weil die Prozedur, die das Formular frmVertragsdetails_Herkoemmlich als modalen Dialog geöffnet hat, erst nach dem Fokusverlust von frmVertragsdetails_Herkoemmlich fortgesetzt wird. Der Fokusverlust tritt sowohl beim Schließen als auch beim Verbergen des Formulars ein. In der aufrufenden Prozedur prüfen wir dann, ob das Formular noch geöffnet ist. Falls nicht, ist der Fall klar: Der Benutzer hat die änderungen verworfen und es sind keine weiteren Schritte im aufrufenden Formular nötig. Ist das Formular jedoch noch geöffnet, muss es zumindest unsichtbar sein, denn sonst würde die aufrufende Prozedur nicht weiter ausgeführt werden.

In diesem Fall haben wir von dieser Prozedur aus vollen Zugriff auf das Formular – auch wenn dieses nicht mehr sichtbar ist. Wir können dann prüfen, ob der Benutzer einen anderen Datensatz im Formular ausgewählt hat und diesen dann entweder in das Kombinationsfeld im aufrufenden Formular übernehmen oder Rücksprache mit dem Benutzer halten, ob dies gewünscht ist.

Schauen wir uns den benötigten Code an. Wir starten mit der Prozedur, die durch das Ereignis Beim Doppelklicken auf das Kombinationsfeld cboVertragID ausgelöst wird und die wie in Listing 1 aussieht.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar