Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: tony.blue am März 27, 2022, 22:48:32

Titel: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: tony.blue am März 27, 2022, 22:48:32
Hallo,

ich habe in einem Formular ein Unterformular (Endlosformular). Mein Platz reicht nur aus, um 4 Zeilen des Unterformulars darzustellen. Super wäre, wenn hier die letzten 4 Datensätze des Unterformulars angezeigt werden.

Per VBA


Private Sub Form_Current()
DoCmd.GoToRecord , , acLast

kann ich zwar zum letzten Datensatz springen, dann wird allerdings nur dieser angezeigt.

Wie kann ich es denn schaffen, dass der 4.-letzte (und damit alle 4 letzten Datensätze) Datensatz angezeigt wird?

Vielen Dank!

Tony
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: Xoar am März 27, 2022, 23:03:16
Hi,

probiere mal
DoCmd.GoToRecord, Record:=acLast, Offset:=-3
Ansonsten
DoCmd.GoToRecord , , acLast
DoCmd.GoToRecord , , acPrevious
DoCmd.GoToRecord , , acPrevious
DoCmd.GoToRecord , , acPrevious

Grüße
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: MzKlMu am März 28, 2022, 00:19:59
Hallo,
verwende eine Abfrage für das Ufo mit
Select Top 4 ......Über ein geeignetes Feld muss die Abfrage entsprechend sortiert werden, dass die 4 letzten Datensätze angezeigt werden.
Du brauchst ein Kriterium (Datum z.B.) das die Reihenfolge der Datensätze definiert, einfach zu sagen "die 4 letzten" geht nicht.
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: Maxel am März 28, 2022, 10:08:42
@klaus,

dann ist die Datensatzherkunft aber auf 4 Datensätze beschränkt und ein Scrollen nach oben - was evtl. gewünscht ist - nicht mehr möglich.

Ich würde die Variante von Xoar bevorzugen, ggf. verpackt in eine Schleife mit Bedingungsprüfung.
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: MzKlMu am März 28, 2022, 10:29:12
Hallo,
Zitataber auf 4 Datensätze beschränkt
scheint mir aber so gewollt. Muss der TE sich dazu äußern.
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: DF6GL am März 28, 2022, 13:31:41
Hallo,

das Form_Current-Ereignis ist denkbar ungeeignet/falsch. Wenn schon

ZitatWie kann ich es denn schaffen, ...und damit alle 4 letzten Datensätze... angezeigt wird?

dann

Private Sub Form_Load()
  DoCmd.GoToRecord , , acLast
  DoCmd.GoToRecord , , acPrevious, 3
End Sub


oder mittels Schaltfläche, wenn wiederholt bei geladenem Formular die DS so angezeigt werden sollen:

Private Sub btnGotoLast4_Click()
  DoCmd.GoToRecord , , acFirst
  DoCmd.GoToRecord , , acLast
  DoCmd.GoToRecord , , acPrevious, 3
End Sub

Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: tony.blue am März 29, 2022, 22:51:40
Vielen Dank für die Rückmeldungen.

Das

Private Sub Form_Load()
  DoCmd.GoToRecord , , acLast
  DoCmd.GoToRecord , , acPrevious, 3
End Sub

bringt leider "Laufzeitfehler '2105': Sie können nicht zu dem angegebenen Datensatz springen."

Weshalb ist mir aber schleierhaft. Wenn ich die acPrevious-Zeile weglasse kommt kein Laufzeitfehler. Ich sehe allerdings auch nur die letzte (statt der letzten 4 Zeilen)

Wie könnte ich denn die 4 letzten Zeilen im UFO angezeigt bekommen? Die 4 letzten Datensätze im UFO sollten immer angezeigt werden, auch wenn ich im Hauptformular einen Datensatz weiterschalte.

Vielen Dank!


Tony
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: MzKlMu am März 29, 2022, 23:35:13
Hallo
siehe Antwort #2
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: tony.blue am März 30, 2022, 15:16:44
Zitat von: Xoar am März 27, 2022, 23:03:16probiere mal
DoCmd.GoToRecord, Record:=acLast, Offset:=-3

Damit springt er beim Öffnen des Hauptformulars (und des eingebetteten UFO) im UFO zum letzten Datensatz. Wenn ich im Hauptformular weiterschalte springt er im UFO zum ersten Datensatz.

Zitat von: Xoar am März 27, 2022, 23:03:16 DoCmd.GoToRecord , , acLast
DoCmd.GoToRecord , , acPrevious
DoCmd.GoToRecord , , acPrevious
DoCmd.GoToRecord , , acPrevious

Bringt leider "Laufzeitfehler '2105': Sie können nicht zu dem angegebenen Datensatz springen."
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: MzKlMu am März 30, 2022, 16:50:30
Hallo,
ZitatDie 4 letzten Datensätze im UFO sollten immer angezeigt werden,
Und noch mal der Hinweis auf Antwort #2.
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: tony.blue am März 30, 2022, 23:39:11
Sorry - ich war im Beitrag 2 aber nicht in #2.

Das Problem an der vorgeschlagenen Lösung in #2 ist:

Zitat von: Maxel am März 28, 2022, 10:08:42@klaus,

dann ist die Datensatzherkunft aber auf 4 Datensätze beschränkt und ein Scrollen nach oben - was evtl. gewünscht ist - nicht mehr möglich.

Ein Scrollen nach oben sollte weiterhin möglich sein.
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: ebs17 am März 31, 2022, 08:04:20
With Me.Recordset
   .MoveLast
   .Move -3
End With
Vermutlich kann aber nicht sichergestellt werden, dass mindestens 4 oder überhaupt Datensätze vorhanden sind. Um Laufzeitfehler zu vermeiden, müsste man dann solche Sondersituationen zusätzlich berücksichtigen.
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: tony.blue am März 31, 2022, 22:04:42
Zitat von: ebs17 am März 31, 2022, 08:04:20With Me.Recordset
   .MoveLast
   .Move -3
End With

Super - vielen Dank. Damit springt er beim Öffnen des Hauptformulars im UFO genau an den 4. letzten Datensatz.

Wenn ich im Hauptformular allerdings einen Datensatz weiterschalte springt er wieder auf den ersten Datensatz.

Derzeit habe ich den VBA-Code von ebs17 als Ereignis "Beim Laden". Wenn ich den Code als Ereignis "Beim Anzeigen" erfasse friert Access ein. Untern links steht "Dieses Recordset kann nicht aktualisiert werden".

Was ist denn das korrekte Ereignis, bei dem ich den VBA-Code eingebe, damit er bei jedem Weiterspringen im Hauptformular zum nächsten Datensatz den VBA-Code ausführt?

Vielen Dank!
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: Beaker s.a. am März 31, 2022, 22:19:53
Hallo Tony,
Zitatdamit er bei jedem Weiterspringen im Hauptformular zum nächsten Datensatz den VBA-Code ausführt?
"Form_Current()" ist schon das richtige Ereignis, du musst den Code aber für das
UFo ausführen
With Me.UFoControlName.Form.Recordset
   .MoveLast
   .Move -3
End With

gruss ekkehard
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: tony.blue am April 04, 2022, 01:17:11
Vielen Dank. Derzeit erhalte ich noch einen Fehler beim Kompilieren.

Mein UFO heißt "ANKEU_Einzelumsätze Nebenkostenabrechnung Formular Abstimmung"

Deshalb habe ich eingetragen:

With Me.Form_ANKEU_Einzelumsätze Nebenkostenabrechnung Formular Abstimmung.Form.Recordset
   .MoveLast
   .Move -3
End With

Das ergibt aber auch einen Fehler beim kompilieren.

Was mache ich falsch?

Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: DF6GL am April 04, 2022, 09:36:03
Hallo,


Mein UFO heißt "ANKEU_Einzelumsätze Nebenkostenabrechnung Formular Abstimmung"

solch ein exzessive Namensgebung für ein Formular habe ich selten gesehen...   :o


Der eigentliche Ursache für den Fehler liegt aber darin, dass die grundlegende Prämisse, Sonder- und Leerzeichen bei der Namensgebung dringend(!) zu vermeiden, nicht beachtet wird.

Benenne also das Form in einen vernünftigen Namen (ohne Leer- und Sonderzeichen) um oder umschließe den Namen mit Eckklammern ("[","]").



With Me![Form_ANKEU_Einzelumsätze Nebenkostenabrechnung Formular Abstimmung].Form.Recordset
Titel: Re: Sprung zum 4.-letzten Datensatz im Unterformular (Endlosformular)
Beitrag von: Beaker s.a. am April 04, 2022, 13:22:28
Hallo Tony,
Vielleicht liest du auch mal dieses (https://www.donkarl.com?FAQ4.2) zur Problemlösung.

gruss ekkehard