Bewertung: 5 / 5

Star ActiveStar ActiveStar ActiveStar ActiveStar Active
 

In Access 2016 ein Startformular (Navigationsformular) erstellen

 Dieser Artikel ist eine Erweiterung meines EBooks "Neues in MS Access 2016 und SharePoint online" bei Bookboon. 

 Grundsätzlich ist das Einrichten eines Navigationsformulars in MS Access 2016 sehr praktisch. Wir können mit Drag & Drop die schon von uns erstellten Formulare und Berichte unseren Anwendern benutzerfreundlich zur Verfügung stellen.

Man nehme z.B. 1 oder mehrere Formularobjekte.

Jetzt erstellen wir uns über Register „Erstellen“ ==> Unterregister „Formulare“ ==> ein Navigationsformular.

Ich wähle mal die 2 Layout-Möglichkeit „Vertikale Registerkarten, links.“

Die gelben Umrandungen für die aktiven Bereiche deuten darauf hin, dass wir uns jetzt schon in der Layout-Ansicht befinden.

Zum Prüfen der jetzigen Ansicht empfiehlt sich ein Klick auf Register „Start“- Gruppe Ansicht – „Layoutansicht“.

Mit Drag & Drop können Sie jetzt ein Formularobjekt von der linken Navigationsleiste auf ein Navigationselement (einen Button [Neues hinzufügen]) ziehen.

Das machen Sie bitte mit allen nötigen Formularen und Berichten.

Mit dem Wechseln in die Formularansicht funktionieren alle Weiterleitungen auch in die angeschlossenen Unterformulare. Zumindest was die Ansichten anbelangt.

Beim Zugriff auf Unterformulare über berechnete Ausdrücke funktioniert das aus dem Navigationsformular nicht mehr, weil es jetzt 3 Navigationsbuttons gibt („frmGespräche“ mit NavigationsButton14 usw…) die immer auf ein und dasselbe Ansichts-Unterformular verweisen.

Weil es nur noch diese eine Ansicht gibt, basteln wieder viele Access-Entwickler lieber einfach ein Register-Steuerelement mit beliebigen Unterregistern auf einem leeren Formular, um wieder auf Unterformulare und deren Steuerelemente eindeutig zugreifen zu können.

Sie greifen lieber wieder zurück auf die gute alte Syntax von Formularen – Unterformularen -Steuerelement.

 

 Ist aber schade, weil die Einfachheit von Navigationsformularen dann leider verschenkt wird.

 

 

 

Im Navigationsformular auf Daten im Unterformular zugreifen

 

Ich möchte vom Navigationsformular aus einen Bericht für den aktuell angezeigten Kunden-Datensatz im Unterformular „hfrmKunden“ ausgeben können.

Dazu sehen Sie hier die Entwurfsansicht zum Navigationsformular. Darin verschachtelt befindet sich das Ansichts-Steuerelement mit aktivem hfrmKunden (Das Unterformular, das ein weiteres Unterformular „ufrmGespraeche“ eines CallCenters beinhaltet).

 

Mit Aktivierung der Taste F4 gelangen wir in die Steuerelement-Eigenschaften, klicken auf das 3. Register „Ereignis“, um dem Button eine Ereignisprozedur zu geben.

Hier sehen Sie meinen VBA-Code dazu.

Private Sub rpt_BerichtAktuellerKunde_Click()

On Error GoTo fehler

 

    If (Forms!Navigationsformular![ufrm_Navi].Form![KNr] <> 0) Then

   

        DoCmd.OpenReport "rpttblKunden", acViewPreview, , _

        "KNr=Forms!Navigationsformular![ufrm_Navi].Form![KNr]"

     

      End If

 

'Ansprechen von Feldern in einem Unterformular eines

'Navigationsformulars seit Access 2010:

 

'Forms!Navigationsformular!Navigationsunterformular.Form!Pauschal_1

'Quelle für diese Syntax von Don Karl (Karl Donaubauer) https://social.msdn.microsoft.com/Forums/de-DE/e8e0da2f-880e-4e82-8288-b882f13bc5a4/navigationsformularzugriff-auf-darin-enthaltene-formulare-aus-anderen-formularen?forum=accessde

 

Exit Sub

 

fehler:

'Wenn man auf etwas anderes als hfrmKunden im Navi geklickt hat,

'dann kann Access den angegebenen Kundenbericht nicht öffnen,

' weil ja die KNr aus hfrmKunden fehlt, Laufzeitfehler Nr. 2465 erscheint!

'Lösung: Man setzt in der Fehlerbehandlung die Fehlernummer auf 0.

 

If Err.Number = 2465 Then

MsgBox "Es fehlen aktuell in der Ansicht die Kundendaten zum Bericht! " & _

vbCrLf & " Der Bericht wird nicht angezeigt!", vbExclamation, "Falsche Ansicht!"

Err.Number = 0

End If

 

End Sub

 

Was ist mit Zugriffen in den eigentlichen Unterformularen über Steuerelemente?

Beim Speichern und Schließen meiner neuen Ereignisprozedur merkt sich Access auch die Verknüpfung für weitere Starts über das Navigationsformular, was sehr praktisch ist, wenn ich dieselbe Funktionalität auch eigenständig im hfrmKunden bauen möchte.

In einem 2. Button, also im hfrmKunden, möchte ich auch auf die KNr zugreifen können.

Das lässt sich schon mit einem Makro realisieren:

Zum Erstellen des Makros können Sie auf Register „Erstellen“ klicken und ein neues Makro starten.

Bedingung=[KNr]=[Formulare]![hfrmKunden]![KNr]

Speichern nicht vergessen.

Dann das hfrmKunden in der Entwurfsansicht im Eigenschaftenblatt, Register Ereignis ==> "beim Klicken"  entsprechend mit dem neuen Makro verändern.

 

                       

Jetzt können Sie in der Formularansicht wahlweise im Hauptformular hfrmKunden Ihren Makrobutton auslösen oder im Navigationsformular die VBA-Prozedur starten.