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

Вниз

TDBTreeView, перемещение элементов   Найти похожие ветки 

 
DelphiLexx ©   (2006-11-16 18:09) [0]

Компонент TDBTreeView и его аналоги работают с БД как с деревом для этого таблица должна иметь следующий формат:
ID PARENT NAME

Как переместить элемент группы на одну позицию вверх\вниз и причем при следующей загрузке дерева оно должно быть построено с учетом этих изменений без введения в БД дополнительного поля.


 
Jeer ©   (2006-11-16 18:27) [1]

Ты сам точно понял, что сказал ?

Когда компьютер выключается, единственным местом, где могут храниться какие-либо данные, являются физические носители информации с ее сохранением без внешнего питания - HDD, FDD, Flash, EPROM.

Вводи дополнительные сведения в txt, реестр, ресурсы, etc - по выбору.


 
Jeer ©   (2006-11-16 18:29) [2]

А - ну да.
Есть еще вариант - не выключение, а гибернация Windows.
Тогда - да, попадешь в тоже место.


 
DelphiLexx ©   (2006-11-16 18:58) [3]


> А - ну да.
> Есть еще вариант - не выключение, а гибернация Windows.
> Тогда - да, попадешь в тоже место.

Объясняю: Есть форма на которой расположен TDBTreeVew, который связан с TFIBDataSet"ом. Как перемещать элемент группы на одну позицию вверх или вниз, все изменения соответственно вносятся в БД. Структуры БД должна состоять из трех полей:
ID PARENT NAME
Пример было
Корень
 узел1
 узел2

После перемещения узла2 на одну позицию вверх должно стать.
Корень
 узел2
 узел1


 
RASkov   (2006-11-16 18:58) [4]

Без добавления дополнительного поля не получится. А как ты их вообще в БД перемещаешь? Они "перемещаются" только в визуальном компоненте.
Добавь числовое поле и сортируй по нему. При смене позиции - поменяй местами значения этого поля.


 
Jeer ©   (2006-11-16 19:07) [5]


> все изменения соответственно вносятся в БД


Изменения чего ?


 
Jeer ©   (2006-11-16 19:10) [6]

извини - не понимаю.
Если у записи изменяется parent, то при следующем select из базы все должно быть выстроено на автомате.
Это если правильный DBTree.


 
RASkov   (2006-11-16 19:10) [7]

> [5] Jeer ©   (16.11.06 19:07)

Чел хочет запоминать порядок расположения записей в БД. Я так думаю. И хочет все ограничить тремя полями.


 
RASkov   (2006-11-16 19:13) [8]

> Если у записи изменяется parent, то при следующем select
> из базы все должно быть выстроено на автомате.

При смене положения, как он описал в [3], ни PARENT ни ID не меняются.


 
Jeer ©   (2006-11-16 19:21) [9]

Так пусть себе задаст вопрос - по каком полю он производит сортировку (выборку по сортировке)


 
Дмитрий Белькевич ©   (2006-11-16 21:48) [10]

>Чел хочет запоминать порядок расположения записей в БД. Я так думаю. И хочет все ограничить тремя полями.

Без проблем - одно поле - uid, второе - данные, третье - указатель на предка, или какое-нить уникальное число - указатель на корень.

двигаем вверх/вниз - меняем юиды записей, двигаем между ветками - меняем ссылки на предка. Я именно так и делал, всё без проблем работает.


 
RASkov   (2006-11-16 23:22) [11]

> [10] Дмитрий Белькевич ©   (16.11.06 21:48)

Хотя может так оно и есть.
Сейчас гляну как я делал в этом случае...


 
RASkov   (2006-11-16 23:33) [12]

Ну вообщем у меня 4 поля было. Вникать в свой код не стал, почему 4, ну да ладно. Код старый, может и я че не так делал.


 
DelphiLexx ©   (2006-11-17 12:51) [13]


> двигаем вверх/вниз - меняем юиды записей, двигаем между
> ветками - меняем ссылки на предка. Я именно так и делал,
>  всё без проблем работает.

примерчик покажи


 
vovnuke ©   (2006-11-17 13:09) [14]

2 [10] Дмитрий Белькевич ©   (16.11.06 21:48)
а у вас былы внешние ссылки на эту таблицу? :-)


 
Jeer ©   (2006-11-17 13:42) [15]


> DelphiLexx ©   (17.11.06 12:51) [13]
>
>
> > двигаем вверх/вниз - меняем юиды записей, двигаем между
> > ветками - меняем ссылки на предка. Я именно так и делал,
>
> >  всё без проблем работает.
>
> примерчик покажи
>


Это плохой тон, более того неверный принцип, в общем случае.


 
Umnik   (2006-11-17 16:57) [16]

DelphiLexx ©   (16.11.06 18:09)  
После перемещения запрос на Update ?


 
clickmaker ©   (2006-11-17 17:31) [17]


> Это плохой тон, более того неверный принцип, в общем случае

Ну человек не привык размусоливать. Ему сразу код нужен. Работа-то горит, начальство ногами топает, премия накрыться может.
А с чтением и осмыслением прочитанного траблы походу
Хотя в [4] уже был исчерпывающий ответ


 
Jeer ©   (2006-11-17 17:41) [18]

clickmaker ©   (17.11.06 17:31) [17]

Принципиальный ответ был дан еще в [1] и [2].

Превратить виртуальные (ОЗУ/RAM) изменения в ([Р]ПЗУ/ROM) изменения.

Добавлением ли нового поля, выносом инфы в некий внешний файл, даже гибернация  - это все сброс "оперативки" в "постоянку".

Есть еще один вариант - записывать скрупулезно карандашиком все изменения и при рестарте  OS (даже при destroy/create формы) - восстанавливать записанный порядок измененений.

Вуаля !

Смеюсь ?
Да - конечно.


 
clickmaker ©   (2006-11-17 17:45) [19]


> Есть еще один вариант - записывать скрупулезно карандашиком
> все изменения и при рестарте  OS (даже при destroy/create
> формы) - восстанавливать записанный порядок измененений.

Да-да. Это нужно отразить в юзер-мануале, а потом внести в список ежедневных обязанностей пользователя. Ибо нефик чаи гонять по полдня и колготки обсуждать всем отделом.


 
RASkov   (2006-11-18 21:31) [20]

> [13] DelphiLexx ©   (17.11.06 12:51)

Временно отключаешь сортировку по дополнительному числовому полю, меняешь местами нужные значения этого поля, включаешь индекс по этому полю, я помоему так делал. непомню....
ЗЫ у меня 4 поля было и одно как раз для этого помоему.



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

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

Наверх




Память: 0.51 MB
Время: 0.062 c
2-1169833568
*Ray*
2007-01-26 20:46
2007.02.11
Модификация данных в базе данных


15-1169034260
Зм1й
2007-01-17 14:44
2007.02.11
Длительность арифметических операций


15-1168980373
Kostafey
2007-01-16 23:46
2007.02.11
Размышления о построении SQL-запроса.


6-1157690605
Merak
2006-09-08 08:43
2007.02.11
прокси в IRC


1-1166611677
DinoRay
2006-12-20 13:47
2007.02.11
TreeView Drag&Drop непонятки