none
Navigationsformular/Zugriff auf darin enthaltene Formulare aus anderen Formularen

    Frage

  • Hallo,

    Ich weiss nicht ob man hier die benötigten Antworten erhält, aber es wäre nett wenn man mich ggf. an einen Experten weiterleiten könnte.

    Folgendes Problem:

    Ich nutze das in Access 2010 vorinstallierte Navigationsformular (vertikale und horizontale Registerkarte). Dieses Formular trägt den Namen "Navigationsformular".

    Ich habe mir nun ein weiteres seperates Formular erstellt mit dem Namen "Kalkulation". Dieses Formular (Kalkulation) habe ich in das Navigationsformular gezogen. Somit ist nun in meinem Navigationsformular das Unterformular Kalkulation enthalten (NavigationButton624). Funktioniert auch alles super.

    Nun hat sich ergeben, dass ich aus diesem Unterformular (Kalkulation/NavigationButton624) ein weiteres Bearbeitungsformular öffne. (Dieses heisst Revision_Kalkulation). Nun möchte ich, dass wenn ich das "Revision_Kalkulations-Formular" schliesse (is ein Popup-Formular), die geänderten Daten sofort im Unterformular "Kalkulation" (welches ja im Navigationsformular liegt) angezeigt bzw. aktualisiert werden. Leider ist jeglicher Versuch gescheitert.

    Der Zugriff über den "Standard UFO-Zugriff" funktioniert nicht. z.B. Forms!Hauptformular!Ufo1.Steuerelement!Controlname usw.

    Keine Fehlermeldung erhalte ich, wenn ich folgenden Code in VBA eingebe, jedoch aktualisiert sich das Unterformular Kalkulation nicht..

        Forms![Navigationsformular].SetFocus
        Forms![Navigationsformular]![NavigationButton624].SetFocus
        Forms![Navigationsformular]![NavigationButton624].Requery

    Kann mir jemand sagen wie ich das Problem löse, und wie man Zugriff auf einzelne Textfelder/Steuerelemente etc. erhält?

    Ich danke im voraus

    Kaschi

    Montag, 23. März 2015 16:15

Antworten

  • Hallo!

    Dieses Verständnisproblem gibt's nach meinem Eindruck bei den meisten Leuten, die das Ding verwenden.

    Das Navigationssteuerelement besteht immer nur aus 1 Unterformular (UFo), egal wie viele verschiedene Herkunftsobjekte (bei dir ca. 10) man über die Navigationsschaltflächen hinzufügt. Dieses 1 UFo hat standardmäßig den (änderbaren) Namen "Navigationsunterformular".

    Jedes mal, wenn man auf eine der Navigationsschaltflächen klickt, wird das bisher im Navigationsunterformular angezeigte Herkunftsobjekt entladen und ein anderes Herkunftsobjekt geladen.

    Der Bezug auf Steuerelemente im aktuell geladenen Herkunftsobjekt funktioniert wie immer bei UFos, also z.B.

    Forms!Navigationsformular!Navigationsunterformular.Form!Pauschal_1

    Anders als bei einem Registersteuerelement mit mehreren UFos kann man sich aber immer nur auf das aktuell geladene Herkunftsobjekt beziehen, weil es ja nur 1 UFo gibt und immer nur 1 geladenes Herkunftsobjekt darin.

    Wegen dieser Beschränkung und anderen Problemen und Bugs verwende ich grundsätzlich keine Navigationsformulare. Sie taugen m.E. nur zur einfachen Navigation, nicht für irgendwelche "ambitionierteren" Zwecke.

    Wenn du dennoch dabei bleiben willst und Bezüge auf andere Herkunftsobjekte benötigst, musst du die Werte aus dem Quellobjekt irgendwo zwischenspeichern (unsichtbare Steuerelemente oder Marken oder dergl. im Hauptformular, Variablen etc.), das Zielobjekt laden und die zuvor gespeicherten Werte holen.


    cu
    Karl
    Access FAQ (de/it): donkarl.com
    Access Lobby: AccessDevelopers.org

    Freitag, 27. März 2015 09:49
  • Hallo!

    Wichtiger als der Button-Name wäre der des Navigationsunterformulares. Den siehst du im Eigenschaftenfenster, wenn du in der Entwurfsansicht 1x auf den Bereich klickst, in dem das Formular "Kalkulation" siehst.

    Wenn du den Namen nicht geändert hast, lautet er im deutschen Access schlicht "Navigationsunterformular". Dann kannst du zum Aktualisieren mal das versuchen:

    Forms!Navigationsformular!Navigationsunterformular.Requery


    cu
    Karl
    Access FAQ (de/it): donkarl.com
    Access Lobby: AccessDevelopers.org

    Dienstag, 24. März 2015 09:09

Alle Antworten

  • Hallo!

    Wichtiger als der Button-Name wäre der des Navigationsunterformulares. Den siehst du im Eigenschaftenfenster, wenn du in der Entwurfsansicht 1x auf den Bereich klickst, in dem das Formular "Kalkulation" siehst.

    Wenn du den Namen nicht geändert hast, lautet er im deutschen Access schlicht "Navigationsunterformular". Dann kannst du zum Aktualisieren mal das versuchen:

    Forms!Navigationsformular!Navigationsunterformular.Requery


    cu
    Karl
    Access FAQ (de/it): donkarl.com
    Access Lobby: AccessDevelopers.org

    Dienstag, 24. März 2015 09:09
  • Hallo,

    Danke für deine Antwort. Super! Das wars!

    Aber so richtig verstanden habe ich das nicht. Mein gesamtes Navigationsformular besteht ja nun aus ca. 10 Unterformularen. (z.B. Kalkulation/Berichte/Statistik usw.) Jedes einzelnes heisst jetzt ja nun Navigationsunterformular.

    Wenn ich jetzt ein Steuerelement bzw. eine Textbox im Unterformular auslesen möchte, wie greife ich darauf zu wenn die alle gleich heissen??

    Beispiel: (Die Sinnhaftigkeit lassen wir mal draussen vor)

    Ich habe z.B. eine Textbox im "Kalkulationsunterformular". Der Name dieser Textbox heisst:  Pauschal_1 (Steuerelementinhalt: tbl_kalk_pauschal_1)

    Wenn ich jetzt z.B. zum "Angebotsunterformular" navigiere und mir dort ein Button platziere der lediglich beim klicken den Textinhalt aus dem "Kalkulationsunterformular" anzeigen soll, wie greife ich dann darauf zu wenn alle meine Unterformulare "Navigationsunterformular" heissen?

    Gruss Kaschi

    Freitag, 27. März 2015 09:10
  • Hallo!

    Dieses Verständnisproblem gibt's nach meinem Eindruck bei den meisten Leuten, die das Ding verwenden.

    Das Navigationssteuerelement besteht immer nur aus 1 Unterformular (UFo), egal wie viele verschiedene Herkunftsobjekte (bei dir ca. 10) man über die Navigationsschaltflächen hinzufügt. Dieses 1 UFo hat standardmäßig den (änderbaren) Namen "Navigationsunterformular".

    Jedes mal, wenn man auf eine der Navigationsschaltflächen klickt, wird das bisher im Navigationsunterformular angezeigte Herkunftsobjekt entladen und ein anderes Herkunftsobjekt geladen.

    Der Bezug auf Steuerelemente im aktuell geladenen Herkunftsobjekt funktioniert wie immer bei UFos, also z.B.

    Forms!Navigationsformular!Navigationsunterformular.Form!Pauschal_1

    Anders als bei einem Registersteuerelement mit mehreren UFos kann man sich aber immer nur auf das aktuell geladene Herkunftsobjekt beziehen, weil es ja nur 1 UFo gibt und immer nur 1 geladenes Herkunftsobjekt darin.

    Wegen dieser Beschränkung und anderen Problemen und Bugs verwende ich grundsätzlich keine Navigationsformulare. Sie taugen m.E. nur zur einfachen Navigation, nicht für irgendwelche "ambitionierteren" Zwecke.

    Wenn du dennoch dabei bleiben willst und Bezüge auf andere Herkunftsobjekte benötigst, musst du die Werte aus dem Quellobjekt irgendwo zwischenspeichern (unsichtbare Steuerelemente oder Marken oder dergl. im Hauptformular, Variablen etc.), das Zielobjekt laden und die zuvor gespeicherten Werte holen.


    cu
    Karl
    Access FAQ (de/it): donkarl.com
    Access Lobby: AccessDevelopers.org

    Freitag, 27. März 2015 09:49
  • Hallo, Kaschi,

    in Access gibt es die DoCmd.BrowseTo-Methode:

    https://msdn.microsoft.com/de-de/library/office/ff196381.aspx

    Der Einsatz ist prinzipiell simpel:

    DoCmd.BrowseTo ObjectType:=acBrowseToForm, _ 
    ObjectName:="EventDS", _ 
    PathToSubformControl:="Main.NavigationSubform", _ 
    WhereCondition:="", _ 
    Page:="", _ 
    DataMode:=acFormEdit

    ObjectName ist dabei das Objekt, das in dem Unterformularsteuerelement geladen wird.

    PathtoSubformControl dürfte bei dir wohl Navigationsformular.Navigationsunterformular sein.

    Gruß, Daniel
    Dienstag, 6. September 2016 14:22
  • Hallo zusammen,

    das mit den Reitern ist eigentlich ganz praktisch, jedoch habe ich wegen den bereits genannten Problemen:

    Wegen dieser Beschränkung und anderen Problemen und Bugs verwende ich grundsätzlich keine Navigationsformulare. Sie taugen m.E. nur zur einfachen Navigation, nicht für irgendwelche "ambitionierteren" Zwecke.

    Wenn du dennoch dabei bleiben willst und Bezüge auf andere Herkunftsobjekte benötigst, musst du die Werte aus dem Quellobjekt irgendwo zwischenspeichern (unsichtbare Steuerelemente oder Marken oder dergl. im Hauptformular, Variablen etc.), das Zielobjekt laden und die zuvor gespeicherten Werte holen.

    Das ganze verworfen.

    was wäre zu den Navigationsformulare eine Alternative bei Access 2010?

    Vielen Dank schon einmal

    Matthias

    Mittwoch, 15. Februar 2017 15:34
  • Hallo!

    Wie schon erwähnt: In einem klassischen Register-Steuerelement kannst du ebenfalls auf jeder Registerseite Unterformulare platzieren, und es sind immer alle vorhanden, ansprechbar und programmierbar, die du halt aktuell gefüllt und geladen hast.

    Ich formuliere das so, weil man aus Performancegründen nicht unbedingt alle x Unterformulare auf allen Registerseiten sofort laden sollte, sondern erst, wenn man sie wirklich benötigt, z.B. die UFo-Eigenschaft "SourceObject" beim Change-Ereignis des Registers füllt, s.a. http://www.donkarl.com?FAQ4.17


    Karl

    Access Developers Conference


    Mittwoch, 15. Februar 2017 17:40
  • Hallo Karl,

    vielen Dank für die Antwort.

    Ich verwende ab jetzt das klassische Registersteuerelement!

    Übrigens Top Website!!

    Grüße

    Matthias

    Donnerstag, 16. Februar 2017 12:33