Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.29;
Скачать: CL | DM;

Вниз

Post После Insert запись убегает в конец. Как на месте оставить   Найти похожие ветки 

 
Silver_ ©   (2003-12-30 16:20) [0]

Если я делаю Insert между записями то после Post запись всё равно убегает в конец,
а мне нужно чтоб она оставалась там (между...)
Намереваюсь сделать так: Добавить еще одно поле при вставке, все что ниже
инкрементнуть (через SQL) (но возни тут..., да к тому-же после SQL DataSet.Close/Open
понадобится, а это никому не нужный тормоз).
Может кто знает путь по короче (проще)


 
Рамиль ©   (2003-12-30 16:23) [1]

Какой инкремент?!! Сделай индекс по полю которое должно быть отсортировано, а не по Primary Key


 
sniknik ©   (2003-12-30 17:07) [2]

примерно тоже самое уже советовал
http://delphimaster.net/view/3-1072571572/


 
Vlad ©   (2003-12-30 17:10) [3]


> sniknik © (30.12.03 17:07) [2]

Не все так просто. А если у соседних строк индексы 10 и 11, и тебе нужно между ними вставить запись ? :-)


 
sniknik ©   (2003-12-30 18:00) [4]

Vlad © (30.12.03 17:10) [3]
вот поэтому и предлагал дробное число и побольше, а целые для примера, удобнее.


 
Sandman25 ©   (2003-12-30 18:05) [5]

Мы в таких случаях вообще CHAR(N) используем. Понадобилось вставить значение между 10 и 11 - пишешь 10.5, понадобилось между 10.1 и 10.2 - пишешь 10.11 При сортировке работает правильно, при связывании тоже. И что самое главное - памяти занимает не больше, чем DECIMAL, и индексы тоже используются.


 
Vlad ©   (2003-12-30 18:09) [6]


> sniknik © (30.12.03 18:00) [4]

Когда-то давно, на Оракле у меня была подобная задача. Таблица была небольшая, не более ста записей. Я решил эту проблему следующим образом:
добавлял в таблицу поле PREVIOUS_ID - ссылка на предыдущую запись.
Т.е. структура получалась следующая:
ID | PREVIOUS_ID | .....
Тогда при добавлении записи между двумя другими, достаточно было поменять ссылку у той записи, которая будет следующей после вставляемой.


 
Sandman25 ©   (2003-12-30 18:20) [7]

[6] Vlad © (30.12.03 18:09)

Очень похоже на двусвязный список.


 
Vlad ©   (2003-12-30 18:27) [8]


> Sandman25 © (30.12.03 18:20) [7]

Фактически он и есть. Дело в том, что в Оракле есть удобный инструмент для работы с такими наборами данных, в других СУБД не встречал


 
Sandman25 ©   (2003-12-30 18:29) [9]

[8] Vlad © (30.12.03 18:27)

Понятно.


 
sniknik ©   (2003-12-30 18:48) [10]

Vlad © (30.12.03 18:09) [6]
а сортировка тут по чему?

тут это лишнее (по моему) ведь нужно только на момент отображения, поле даже в базу не обязательно писать


 
Vlad ©   (2003-12-30 18:52) [11]


> sniknik © (30.12.03 18:48) [10]

Еще раз говорю, база была ORACLE.
Там есть такая конструкция:
select * from table start with <начальный_ID> connect by prior id=previous_id.
Таким образом можно без всякой сортировки вытащить все записи по иерархии, в порядке указанном в connect by
Вобщем-то в IB это тоже реализуется с помощью рекурсивной ХП


 
sniknik ©   (2003-12-30 18:57) [12]

> база была ORACLE.
мне это ничего не говорит, не работал, не ну теперь знаю, что так можно. :-)



Страницы: 1 вся ветка

Текущий архив: 2004.01.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
6-93603
Exceed
2003-11-25 00:25
2004.01.29
WebBrowser и прокси


8-93583
gagarin
2003-09-26 05:16
2004.01.29
midi


1-93474
GRF
2004-01-14 21:07
2004.01.29
Как отследить выделение текста в ячейке StringGrid


1-93482
афвуд
2004-01-14 15:50
2004.01.29
Сишные Указатели на функции и их интерпретация в Дельфи


14-93645
@ndrey
2004-01-08 00:55
2004.01.29
Люди!!!!. Как Windows XP Установить из DOS