Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

vba Aufruf eines Formulars in der Navigation

Begonnen von nimora, Mai 11, 2016, 17:19:04

⏪ vorheriges - nächstes ⏩

nimora

Hi, ich möchte aus einem Formular ein anderes Formular per button aufrufen. Wenn ich im VBA das Formular als Ziel angebe, öffnet sich, verständlicherweise das Formular aber als extra Reiter.

Bin da weder mit DoCmd.OpenForm noch mit DoCmd.BrowseTo zum Ziel gekommen.

Wie spreche ich also die einzelnen Elemente der Navigation an?

Ich nutze Access 2016

Thx

DF6GL

Hallo,


versteh nicht..

Wenn sich Formulare als "Reiter" öffnen, liegt das an Einstellungen in den Access-Optionen.

Allenfalls kann ein Formular als Popup eingestellt werden, wodurch es sich außerhalb des Access-Fensters öffnet.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

nimora

das war nicht gemeint :)

also:
Ich habe ein Navigationsformular, in dem verschiedene Formulare als Navigationselemente vorhanden sind. Z.B. "allg. Übersicht", "Kunden" und "Produkte".
in der Übersicht sind die letzten Verkäufe aufgeführt. Dort möchte ich von z.b. dem jüngsten Einkauf per Button direkt auf den Kunden springen. Hier öffnet sich leider das Formular "Kunden" separat und eben nicht das Navigationselement "Kunden". Letzteres ist aber gewünscht.

Konnte ich es jetzt klar machen?

Beaker s.a.

Hallo nimora,
Dein im Naviformular angezeigtes Form "Kunden" ist ein UFo desgleichen.
Wenn Du aber das Form "Kunden" per DoCmd.OpenForm öffnest wird es
als HFo neben dem Navi-Form geöffnet.
Um auf das (schon offene) Form zu zugreifen musst Du nur den Focus
darauf setzen und auf den gewünschten Datensatz positionieren.
hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

nimora

Danke Beaker,
das mit dem Datensatz klapp natürlich, aber wie lege ich denn den Focus auf das UFo? Wie spreche ich das an. Das ist ja als normales Formular angelegt, bekommt das dann intern einen anderen Namen als UFo?

Beaker s.a.

Hallo nimora,
Weiss ich ehrlich gesagt im Moment auch nicht, da ich das nicht verwende.
Habe hier jetzt auch keine DB, mit der ich das mal eben testen könnte.
Bin morgen wieder zu Hause, dann schau ich mal.
Du könntest bis dahin mal versuchen, ob es eine Forms-Auflistung des
Naviforms gibt.
DeinNaviFom.Forms("Kunden")
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MaggieMay

Hallo,
Zitat von: nimora am Mai 11, 2016, 17:19:04
Bin da weder mit DoCmd.OpenForm noch mit DoCmd.BrowseTo zum Ziel gekommen.
die BrowseTo-Methode dürfte in Verbindung mit einem Navigationsformular die richtige Wahl sein.

Zeige doch bitte deinen diesbezüglichen Versuch und erkläre bzw. beschreibe die dabei verwendeten Komponenten.

PS:
Der Phantasiecode von Ekkehard ist da eher nicht zielführend.
Freundliche Grüße
MaggieMay

nimora

wenn DoCmd.BrowseTo  der Weg ist, schnalle ich den wohl nicht.

Die Doku gibt folgendes an:

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


Ich scheitere aber an der Zuordnung. Ich bekomme einen Fehler 6045

Die WechselnZu-Maktoaktion erfordert ein gültiges Pfad-Argument. Ein gültiges Pfad-Argument hat folgende Form:
Hauptformular1.Unterformular1>Formular1.Unterformular1

Ist das Hauptformular1 dann jetzt die Bezeichnung des gesamten Navigationselements? und das Unterformular1 ist dann was? Ich schnelle die Struktur da nicht. In der Navigation ist der Button, wenn ich den auswähle habe ich in den Einstellungen einen Namen "NavigationButton13". Spielt das dabei eine Rolle? Ich finde nicht heraus, was Hauptfrom1, Unterform1 und Form1 ist.

Entsprechend kann ich deinen Wunsch, Maggie nicht erfüllen. Ich wüsste nicht, was ich schreiben soll.

Wärt ihr noch mal so nett und würdet mich ein wenig erhellen?

Beaker s.a.

Hallo Maggie,
ZitatDer Phantasiecode von Ekkehard ist da eher nicht zielführend.
Wie gesagt ich verwende dieses Naviform nicht, und habe mich deshalb
auch noch nicht mit zugehörigen Eigenschaften/Methoden beschäftigt.
War ein Schuss ins Blaue.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MaggieMay

@nimora:
Du musst schon die bei dir gültigen Namen verwenden.
Wie heißen dein Navigationsformular und wie das Navigationsunterformular?
Freundliche Grüße
MaggieMay

Beaker s.a.

Hallo nimora,

ObjectName (i.B. EventDS) ist das Formular, das Du sehen willst
(eingebettet in das UFo-Control).

Main ist der Name des NaviForms.

NavigationSubform ist das UFo-Control, in dem das o.a. Form ein-
gebettet ist.

gruss ekkehard

P.S. getestet
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

nimora

@MaggieMay - Danke

genau darüber bin ich nicht ganz sicher.

das Nav heißt frmNavigation, darin enthalten sind dann verschiedene andere Formulare. Nun bin ich nicht sicher, ob die dann im vba auch ihre Originalnamen behalten oder nicht. eines heißt z.b. frmKunden und das soll in der Navigation per Button geöffnet werden.

Und insgesamt kann ich nicht zuordnen, wie das hier gemeint ist:
DoCmd.BrowseTo ObjectType:=acBrowseToForm, _
ObjectName:="EventDS", _
PathToSubformControl:="Main.NavigationSubform", _
WhereCondition:="", _
Page:="", _
DataMode:=acFormEdit


und hier:
Hauptformular1.Unterformular1>Formular1.Unterformular1

Die Fehlermeldung und die Doku bringe ich da nicht zusammen.

Was ist der Path, was ist ObjectName und Main.NavigationSubform. und wie gesagt, wie passt dann die Fehlermeldung mit "Hauptform1", "Unerform1" usw. da rein.

thx

nimora

@Beaker: thx
ZitatObjectName (i.B. EventDS) ist das Formular, das Du sehen willst
(eingebettet in das UFo-Control).

Main ist der Name des NaviForms.

das verstehe ich.

ZitatNavigationSubform ist das UFo-Control, in dem das o.a. Form ein-
gebettet ist.

verstehe ich leider nicht. ist damit der Name des Buttons gemeint?

Beaker s.a.

Hallo nimora,
Nein, das Control unter dem Button. (Buttonleiste oben)
Wenn du (in der Entwurfsansicht) auf den Button klickst, bekommt
der doch einen farbigen Rahmen. Wenn du nun in den Bereich darunter
klickst, (solltest) Du einen gleichfarbigen Rahmen um das dargestellte
Formular sehen; - DAS ist das UFo-Control, in den das Formular
eingebettet ist. Dessen Namen (F4) musst du in den Code schreiben.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

nimora

#14
ZitatWenn du nun in den Bereich darunter
klickst, (solltest) Du einen gleichfarbigen Rahmen um das dargestellte
Formular sehen; - DAS ist das UFo-Control, in den das Formular
eingebettet ist. Dessen Namen (F4) musst du in den Code schreiben.
gruss ekkehard

Das lautet "Navigationsunterformular" aber das ist bei allen UFo's gleich. Überall steht das.

EDIT:

so, wie folgt hat es geklappt:

DoCmd.BrowseTo ObjectType:=acBrowseToForm, _
ObjectName:="frmKunden", _
PathToSubformControl:="frmNavigation.Navigationsunterformular", _
DataMode:=acFormEdit


Letzte Fragen fürs Verständnis: ist das normal, dass da überall Navigationsunterformular steht? Kann das zu Problemen führen und sollte das geändert werden?

Besten Dank für euer aller Mühe.

Jetzt kann ich ins lange WE gehen. Euch wünsche ich dasselbige.

VG