Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.034 c
3-1163714813
dreamse
2006-11-17 01:06
2007.02.11
Помогите составить SQL запрос


2-1169474454
Ega23
2007-01-22 17:00
2007.02.11
Как офицально называется MSDE под MS SQL 2005?


2-1169440828
Генрих
2007-01-22 07:40
2007.02.11
Memo и номер строки


6-1157356395
IdSNMP
2006-09-04 11:53
2007.02.11
Что про IdSNMP ни кто не просвятит?


2-1169708131
Сергей С.
2007-01-25 09:55
2007.02.11
File not found *.dcu





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский