Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: compinaut am Juli 30, 2015, 09:14:45

Titel: Recordset.MoveLast endet mitten in der Tabelle
Beitrag von: compinaut am Juli 30, 2015, 09:14:45
Hallo,
ich habe ein Problem.
In einer Tabelle sind 200 Einträge. Somit müsste die Funktion Recordset.MoveLast doch den letzten Datensatz mit der Nummer 200 finden. Jedoch gibt diese Funktion bei mir immer den Datensatz 183 aus. Auch wenn ich weitere Datensätze hinzufüge, wird bei der genannten Funktion immer der Datensatz 183 angesprungen.
Woran könnte das liegen?
Gruß
compinaut
Titel: Re: Recordset.MoveLast endet mitten in der Tabelle
Beitrag von: MzKlMu am Juli 30, 2015, 09:34:45
Hallo,
eine Tabelle ist im Hintergrund unsortiert. Neue Datensätze werden daher nicht wirklich hinten angefügt. Wenn man eine Tabelle anzeigt wird diese mit der Sortierung des Primärschlüssels angezeigt, aber eben nur angezeigt. Hat Deine Tabelle einem Primärschlüssel ? Erstelle eine Abfrage mit einer passenden Sortierung und verwende die Abfrage als Recordset und nicht die Tabelle. Man sollte ohnehin immer über Abfragen auf Tabellen zugreifen.
Und schließlich werden Datensätze nicht über deren Position in einer Tabelle bestimmt, sondern immer über den eindeutigen Primärschlüssel.
Titel: Re: Recordset.MoveLast endet mitten in der Tabelle
Beitrag von: markusxy am Juli 31, 2015, 10:40:47
@compinaut
Hast du Dein Problem gelöst?, wenn nicht dann zeig uns doch wie du die Daten anfügst. Ist das Recordset an ein Formular gebunden, oder geschieht das ganze ausschließlich im Code.

@MzKlMu
Also Deine Angaben kann ich nicht zustimmen. Wenn ein Recordset vom Typ Tabelle geöffnet wird, dann sind die Daten unsortiert, unabhängig von Indizes. Das schaut vielleicht so aus, weil oft die erste Spalte den PrimärSchlüssel enthält und die Daten in dieser Reihenfolge vorliegen, ist aber reiner Zufall - wobei der Typ Tabelle bei einer Verknüpfung sowieso nicht möglich ist.

Bei den anderen Typen hingegen erfolgt die Sortierung nach Primärschlüssel, falls einer existiert, ansonsten ebenso unsortiert.

Unabhängig davon wird neuer Datensatz soweit ich weiß, immer am Ende des Recordsets angezeigt. Um das zu ändern, muss entweder ein Requery, oder eine erneutes Sort folgen. Bei ADO hingegen wird unter Verwendung von Sort, die Reihenfolge bei einem neuen Datensatz auch ohne erneutes Sort richtig angezeigt.
LG Markus