![](/img/smilies/icon_smile.gif)
Соответственно если я сейчас перемещу первый элемент (pos=1) вверх, и его pos станет равной 0, то образуется разрыв позиций. SELECT pos FROM elements WHERE tab=1 ORDER BY pos даст результат: 0,2,3,4,5... что в принципе не хорошо. Зачем порождать хаос. Тут или таблицу пересобрать или принять "волевое решение" ;) что MIN(pos)=1.
[size=-2]------ Добавлено в 06:54
По этой же причине следует в elmen.dpr
procedure DeleteElement(name:PChar); stdcall;
begin
exec('delete from elements where id = ''' + name + '''');
end;
procedure DeleteElement(name:PChar); stdcall;
Var r: pointer;
tab,pos:integer;
begin
r := query('select tab,pos from elements where id = ''' + name+ '''');
sqlite3_step(r);
tab := sqlite3_column_int(r,0);
pos := sqlite3_column_int(r,1);
sqlite3_finalize(r);
exec('delete from elements where id = ''' + name + '''');
exec('UPDATE elements SET pos=pos-1 WHERE pos>'+Int2Str(Pos)+' and tab='+Int2Str(tab));
end;