Hallo,
ich bin gerade arg verwirrt
2026-03-24 11_47_51-Access.png Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_Wartungsprotokoll " _
& "WHERE Autor = '" & Environ("Username") & "'")
If Not rs.EOF Then
rs.MoveLast
If DateDiff("s", rs!Zeit, Now) > 300 Then
End If
End IfDie Tabelle hat etwa 130.000 DS, der gesuchte Autor hat knapp 240 DS.
Der erste Datensatz in der Tabelle (gefiltert nach diesem Autor) hat die 164164. der letzte die ID 174534.
Frage ich im Haltemodus in der Zeile DateDiff im obigen Code die Zeit ab, gibt er mir das Datum vom Datensatz 164331 an. Gebe ich dann im Direktfenster rs.MoveFirst ein, springt er zum DS 174488, eine Eingabe von rs.MoveLast ergibt dann wieder ID 164331.
Was ist das für eine Logik?
Gruß
Doming
Hallo,
die Logik ist, daß eine SELECT-Abfrage Datensätze in beliebiger Reihenfolge ausgibt, solange es kein ORDER BY gibt.
"Last" ist dann der letzte in der Sortierreihenfolge. Ohne ORDER BY kann es irgendein Datensatz sein, es KANN der letzte PK sein, aber das ist keine Garantie.
Es gilt bei SELECT: Performance first, wenn es gerade günstiger ist, eine andere Reihenfolge zurückzugeben, dann wird das eben diese sein.
Gruß
Christian
hm, danke für die Aufklärung. Ich dachte bisher tatsächlich, dass Movelast bei einem Aufruf ohne Sortierung zum chronologisch letzten Datensatz führt, also autowertbasiert.
Ich glaube ich muss so einige meiner DB-Gerüste nochmal neu bewerten.