Das setzt aber alle PositionsNr, die 999 sind, auf die höchste freie PositionsNr <> 999. Damit käme die 999 nicht mehr vor, aber die (Max <> 999) + 1, genauso oft, wie bisher die 999.
Man müsste die Tabelle satzweise durchgehen und für jeden Satz, dessen PositionsNr = 999 ist, per Update aktuallisieren. Dabei ist Max auf die PositionsNr aber nicht die nächste freie, sondern die höchste vergebene. Lücken kann man damit nicht finden.
'ne Lösung hab' ich nicht, aber eventuell hilft dashier weiter?
http://www.delphipraxis.net/85745-da...ds-finden.html