PDA

Vollständige Version anzeigen : DoCmd Click nächste Registerkarte


DerLothringer
20.06.2012, 08:04
Hallo Leute,

ich habe ein Navigationsformular mit mehreren Reitern. Im 1. Formular gibt man Daten ein. Am Ende dieses Formulars ist dann ein Knopf der die Datenspeichert und über eine Select Case Anweisung den Inhalt aller Felder prüft. Nun möchte ich das wenn alle Werte richtig eingetragen sind das und man den Button klickt das automatisch auf den nächsten Reiter gesprungen wird.

If...
ElseIf.....
ElseIf...

Else: Call NavigationButton9_Click()

DoCmd.Open "Reiter2"

geht auch nicht. Jemand eine Idee mit welchem Befehl man das lösen könnte? Der Reiter funktioniert anscheinend nicht wie ein Umschaltbutton der nur die Ansicht wechselt...

Stefan Dase
20.06.2012, 08:29
Hallo DerLothringer,

um die Seite in einem Registersteuerelement muss du die Value-Eigenschaft auf den Seitenindex (in den Eigenschaften der Seite!) der gewüschten Seite setzen.

Also z.B.


Me!MeinRegister.Value = 1


HTH,
Stefan

Atrus2711
20.06.2012, 08:32
Hi,

ich hab kein 2010 zur hand, aber ich meine mich zu erinnern, dass ein Naviform kein gewöhnliches Register enthält (für das deine Aussage zuträfe), sondern mit diesen ominösen NavigationButtons arbeitet, die das Ufo steuern....

nix für ungut.

DerLothringer
20.06.2012, 08:36
Ja Martin, das stimmt. Diese ominösen NaviButton dienen nur dazu das Formular mit dem sie verknüpft sind anzuzeigen. Leider lassen sie sich nicht wie ein normaler Button ansprechen! Wenn es geht würde ich das aber gern irgendwie umgehen.

Josef P.
20.06.2012, 08:42
Hallo!

Mit DoCmd.BrowseTo sollte das funktionieren.

DoCmd.BrowseTo acBrowseToForm, "NameDesFormularsVonButton9", "DeinHauptFormName.NavigationsunterformularSteuerelementName"

mfg
Josef

DerLothringer
20.06.2012, 09:08
Hab jetzt:

DoCmd.BrowseTo acBrowseToForm, "Prüfliste", "Navigationsformular.Navigationbutton9"


reingesetzt, aber es passiert nichts.

Hauptformname = Navigationsformular, oder?!
Navisubformsteuerelementname = ??? (Der Name der Registerkarte, bzw. des Buttons der diese darstellt?)

Josef P.
20.06.2012, 09:11
Hallo!

Ein Blick in die Hilfe verrät manchmal die Lösung. ;-)

Beispiel
Im folgenden Codebeispiel wird das Formular EventDS im Unterformularsteuerelement NavigationSubform des Formulars Main direkt im Bearbeitungsmodus geöffnet.

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

mfg
Josef

DerLothringer
20.06.2012, 09:33
Hallo Josef,

wenn ich die Hilfe aufmache versteh ich meist nur Bahnhof. Ich habe auch nur minimale VBA Kenntnisse.

Im Anhang mal eine Beispiel-DB. Kannst du es an der mal demonstrieren? Ziel ist es im Formular "Navigationsformular" in der Registerkarte "Kunde Region" durch Klick auf den Button "Nächste Registerkarte" in die Registerkarte "Buch Abfrage" zu gelangen.

Josef P.
20.06.2012, 09:40
Hallo!

ich muss gestehen, dass ich keine Lust habe, einen Code zu überarbeiten, sondern lieber Hilfe zur Selbsthilfe gebe.

Lies dir bitte einmal den Auszug aus der Hilfe genau durch. (Ich helfe dir mit Farbmarkierungen.)

Beispiel
Im folgenden Codebeispiel wird das Formular EventDS im Unterformularsteuerelement NavigationSubform des Formulars Main direkt im Bearbeitungsmodus geöffnet.

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


mfg
Josef

Anne Berg
20.06.2012, 09:43
Hallo DerLothringer,

vergleiche doch nochmal Josefs Vorschlag aus #5 mit dem was du daraus gemacht hast.
Syntaxregeln sind dazu da, exakt eingehalten zu werden, sonst kann VBA-Code nicht funktionieren.
Hauptformname = Navigationsformular, oder?! ==> JA
Navisubformsteuerelementname = ??? (Der Name der Registerkarte, bzw. des Buttons der diese darstellt?) ==> NEIN, der Name des Subform-Controls dürfte "Navigationsunterformular" sein (nachsehen kann ich es im Moment nicht)

DerLothringer
20.06.2012, 09:54
Hallo,

ich habs jetzt so gemacht:

Private Sub Befehl37_Click()
DoCmd.BrowseTo ObjectType:=acBrowseToForm, _
ObjectName:="Buch Abfrage", _
PathToSubformControl:=Navigationsformular.Navigationsunterformular,
WhereCondition:="", _
Page:="", _
DataMode:=acFormEdit
End Sub

Nur bekomme ich immer die Meldung Syntaxfehler. Ich weiß nur nicht was daran falsch sein soll.

"Buch Abfrage" heißt das Formular das ich öffnen will (bzw. die Registerkarte)

"Navigationsformular" ist bei mir auch der Name des Navigationsformulares in dem ich alle Formulare drin hab

"Navigationsunterformular" müsste denke ich auch passen, zumindest heißen die einzelnen Formulare so wenn man sie in der Entwurfsansicht anwählt.

Übersehe ich etwas offensichtliches?

Atrus2711
20.06.2012, 10:02
Ja, daher hier in Extragroß
Private Sub Befehl37_Click()
DoCmd.BrowseTo ObjectType:=acBrowseToForm, _
ObjectName:="Buch Abfrage", _
PathToSubformControl:="Navigationsformular.Navigationsunterformular",
WhereCondition:="", _
Page:="", _
DataMode:=acFormEdit
End Sub

DerLothringer
20.06.2012, 10:07
Der Syntaxfehler kommt auch mit ""

Atrus2711
20.06.2012, 10:11
Private Sub Befehl37_Click()
DoCmd.BrowseTo ObjectType:=acBrowseToForm, _
ObjectName:="Buch Abfrage", _
PathToSubformControl:="Navigationsformular.Navigationsunterformular", _
WhereCondition:="", _
Page:="", _
DataMode:=acFormEdit
End Sub

Die Zeilenfortsetzung nach dem "Navigationsformular.Navigationsunterformular" hat noch gefehlt.

DerLothringer
20.06.2012, 10:14
Danke, funktioniert!

Ist mir schon fast peinlich hier noch Fragen zu stellen. Es ist mein erstes größeres Access-Projekt und ich denke ich lerne wohl am meisten während des arbeitens an der ganzen Geschichte...

Danke an Anne und Martin die hier schon oft meine dummen Fragen beantwortet haben. Und an Josef für den Tipp mit dem problem hier!!!

Atrus2711
20.06.2012, 10:21
ich lerne wohl am meisten während des arbeitens
Das ist immer so. Keep it up! :winner:
"Ich liebe es, wenn ein Plan funktioniert" (Hannibal Smith)