Hallo rocksoft,
dann wäre es sinnvoll die Position als Feld in der Datenbank mitzuführen. Wenn du jetzt einen Button "Aktuelle Position nach oben" anklickst und die aktuelle Position ist z.B. 5, dann suchst du zunächst Pos4 z.B. über und verschiebst den Satz an eine Position, die du sonst nicht nutzt:
Delphi-Quellcode:
myTable.FindKey([4]);
myTable.Edit;
myTable.FieldByName('Pos').AsInteger := 9999;
myTable.Post;
Dann verschiebst du den alten 5er an die Position 4:
Delphi-Quellcode:
myTable.FindKey([5]);
myTable.Edit;
myTable.FieldByName('Pos').AsInteger := myTable.FieldByName('Pos').AsInteger-1;
myTable.Post;
und jetzt holst du den Datensatz von ganz hinten wieder:
Delphi-Quellcode:
myTable.FindKey([9999]);
myTable.Edit;
myTable.FieldByName('Pos').AsInteger := 5;
myTable.Post;
Wenn du jetzt noch vorher
myTable.DisableControls;
und hinterher
myTable.EnableControls;
aufrufst, sieht der Nutzer von der Verschiebung erst nachdem alles wieder richtig positioniert ist.