Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Focus Unterformular

Begonnen von joschi50, Oktober 03, 2024, 11:34:25

⏪ vorheriges - nächstes ⏩

joschi50

Hallo,
ich habe ein Hauptformular fm_rechnungen mit einem Unterformular uf_zeiten. Die Beiden Formulare sind nicht miteinander verknüft, uf_zeiten dient nur der Information.
Wenn ich das fm_rechnungen über einen Button öffne, möchte ich, das im Hauptformular und auch im Unterformular zum letzten Datensatz gesprungen wird.
Leider funktioniert dieser Code nicht:
DoCmd.OpenForm "fm_rechnungen"
DoCmd.GoToRecord , , acLast
Forms!fm_rechnungen!uf_zeiten.Form.SetFocus
DoCmd.GoToRecord , , acLast
Fehler: In Ihrem Ausdruck ist eine ungültige Methode angegeben.
Wie kann ich das lösen ?

Auch Wolkenkratzer haben mal als Keller angefangen.

Knobbi38

Hallo,

das Formular frm_rechnungen sollte das "selbständig" erledigen, so daß man nur das Formular öffnen muß.
Dazu erstellst du im Form_Load Event eine entsprechende Prozedur, welche den aktuellen DS auf den letzten DS verschiebt. Wenn im UF mehrere DS angezeigt werden, kannst du eine öffentliche Prozedur im UF erstellen, die dann dort das Gleiche macht. Diese wird dann aus dem HF aufgerufen.


joschi50

Ja Danke :-) Manchmal steht man auf dem Schlauch.
Ich habe in die Eigenschaft "Beim Anzeigen" des UF einfach ein DoCmd.GoToRecord , , acLast eingefügt.
Funktioniert.
Auch Wolkenkratzer haben mal als Keller angefangen.

Knobbi38

Das ist keine gute Idee, denn dann kannst du keinen anderen DS mehr auswählen! "Zum letzen DS Wechseln" sollte als eigenständige Prozedur erstellt und dann aus dem HF explizit aufgerufen werden. Außerdem sollte man Makroaufrufe aus VBA heraus (DoCmd.xxx) so weit wie möglich vermeiden.

Beispiel im UF:
Public Sub SelectLastRecord()
  With Me.RecordsetClone
    If Not (.BOF And .EOF) Then
      .MoveLast
      Me.Bookmark = .Bookmark
    End If
  End With
End Sub
und dann aus dem HF heraus:
...
Me!subContainer.form.SelectLastRecord
...
Hinweis: subContainer ist hier der Name des SubForm-Steuerelements!

Man könnte auch direkt auf das Formular-Recordset zugreifen, aber i.d.R. verwende ich für eine Datensatz-Navigation das Formular.Recordsetclone Objekt.

Gruß
Knobbi38