Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: tragger am Juni 24, 2013, 23:33:55

Titel: Beim Formularöffnen Registerreiter 2 öffnen
Beitrag von: tragger am Juni 24, 2013, 23:33:55
Hallo Leute,

heute Abend mal wieder eine Stellen, an denen ich nicht weiterkomme und Freund Google auch nicht helfen kann.

Ich möchte ein Formular öffnen und dann automatisch das Registerkartenlement auf die Zweite Registerkarte einstellen. Wie geht das?

Hier rufe ich das gewünschte/letzte Formular auf

Call Lastformopener(, OldNetwork)

und hier der zugehörige Sub:


Public Sub Lastformopener(Optional Customer As Long, Optional Network As Long)
    ' Öffnen des zuletzt geöffneten Formulars
    If LastWindow = "" Then
        ' Defaultfall Startformular
        DoCmd.OpenForm "frmSteuerung"
    ElseIf Customer <> 0 Then
        DoCmd.OpenForm LastWindow, , , "MitgliedsNr=" & Customer
    ElseIf Network <> 0 Then
        DoCmd.OpenForm LastWindow, , , "VerbundNr=" & Network
    Else
        DoCmd.OpenForm LastWindow
    End If
End Sub


Immer ist im Formular das Register "Personendaten" auf Default geöffnet, da es das erste ist. Wie aktiviere ich beim öffnen nun
das zweite Register "Adresse?

Vielen Dank für eure Unterstützung.

Titel: Re: Beim Formularöffnen Registerreiter 2 öffnen
Beitrag von: JotGe am Juni 25, 2013, 01:04:31
Hallo tragger

schreibe im Ereignis beim Öffnen des Formulars

Private Sub Form_Open(Cancel As Integer)
   Me!Seite2.SetFocus
End Sub


ersetze im Code Seite2 durch Deinen Registernamen.

Gruß
JG.
Titel: Re: Beim Formularöffnen Registerreiter 2 öffnen
Beitrag von: tragger am Juni 25, 2013, 22:22:02
Das ist der allgemeine Weg. Richtig. Aber in meinem Fall reicht mir das nicht.

Denn nach der Lösung würde immer diese Registerkarte aufgerufen. Das soll so nicht sein, sondern in Abhängigkeit vom letzten Vorgang. Dazu übergebe ich ein OpenArgs. Das kommt auch an. Leider passiert durch den If-Block nichts mehr und das Register Adresse wird nicht mehr geöffnet:

Private Sub Form_Open(Cancel As Integer)
    Dim register As String
   
    If Not IsNull(Me.OpenArgs) Then
        register = Me.OpenArgs
        Me!Adresse.SetFocus
    End If
End Sub


Wie kann ich das nun lösen? Und wie kann ich das lösen in Abhängigkeit vom Inhalt des String register?
Titel: Re: Beim Formularöffnen Registerreiter 2 öffnen
Beitrag von: DF6GL am Juni 25, 2013, 22:28:06
Hallo,

na, prüf halt die Variable "Register" oder gleich den Inhalt von Openargs:

Private Sub Form_Open(Cancel As Integer)
   
    If Not IsNull(Me.OpenArgs) Then
       If Me.OpenArgs ="DeinText"  Then   Me!Adresse.SetFocus
    End If
End Sub
Titel: Re: Beim Formularöffnen Registerreiter 2 öffnen
Beitrag von: tragger am Juni 25, 2013, 22:37:03
Habe ich. Openargs enthält den Inhalt "Adresse" und er geht auch in das Then.

Doch das Ergebnis ist weiter falsch. Es funktioniert nur ohne die If isnull....-Phase. >:(
Titel: Re: Beim Formularöffnen Registerreiter 2 öffnen
Beitrag von: DF6GL am Juni 25, 2013, 22:40:09
Hallo,


Wie heißt die Registerseite, bzw. welche "Positionsnummer" hat die und wie lautet der Registername?

Titel: Re: Beim Formularöffnen Registerreiter 2 öffnen
Beitrag von: tragger am Juni 25, 2013, 22:42:58
Die Registerkarte hat den Namen Adresse und den Seitenindex 1. Sie ist also das Register an Position 2, da ja bei 0 die Zählung beginnt...

Es funktioniert ja auch in folgendem Code aber ohne die Abhängigkeit >:(:

Private Sub Form_Open(Cancel As Integer)
Me!Adresse.SetFocus
End Sub
Titel: Re: Beim Formularöffnen Registerreiter 2 öffnen
Beitrag von: tragger am Juni 25, 2013, 22:49:20
Ich glaube, ich habe es. Das Register im Gesamten hat noch einen spezielleren Namen. Somit kann ich das scheinbar über den Index lösen. Geht das mit dem Namen definitiv nicht??

Hier die "Zwischenlösung"
Private Sub Form_Open(Cancel As Integer)
    If Not IsNull(Me.OpenArgs) Then
        MsgBox Me.OpenArgs
        If Me.OpenArgs = "Adresse" Then Me!RegisterStr5 = 1
    End If
End Sub