Текущий архив: 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.49 MB
Время: 0.048 c