1. Я бы на RecId не завязывался - это раз. Он может иметь различные значения, и вовсе не упорядоченные.
2. Я бы добавил поле в таблицу типа Int или int64 (если записей оочень много, что врядли).
3. Сортировку сделал бы по этому полю в порядке возрастания. Создал бы соответствующий индекс (это пригодиться еще и на шаге 4), и указал бы его в свойствах источника данных.
4. Создал бы дисплей метод на уровне таблицы, который бы возвращал сумму значений всех записей таблицы, у которых значение добавленного поля меньше значения этого поля у текущей записи. (меньше или равно, в зависимости от ваших требований)
5. Метод этот скорее всего закэшировал бы (нужно уже смотреть, как работать будет в обоих случаях).
Тогда сортировка не была бы привязана к "порядку выборки".
Но при этом пользователю запрещено было бы сортировать записи по другим полям, или же фильтровать их.
|