powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Копирование ветки дерева (иерархии)...
10 сообщений из 10, страница 1 из 1
Копирование ветки дерева (иерархии)...
    #32542774
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица с полями Id, ParentId,...
Надо бы выбрать (в курсор) все записи ветки, назначить новые Id, ParentId...
Как єто сделать даже не представляю... :(
думаю, помогла бы тут рекурия но как єто сделать с SQL ?..
...
Рейтинг: 0 / 0
Копирование ветки дерева (иерархии)...
    #32542994
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели никто не пользуется рекурсивными функциями?..
Я делаю так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
_screen.Cls 
PUBLIC l
l= 1 
getchild("39_")

PROCEDURE getchild
LPARAMETERS cId
SELECT * from data\edb007 WHERE (ALLTRIM(parent)=ALLTRIM(cId)) INTO CURSOR ('c'+ALLTRIM(STR(l)))
IF RECCOUNT()!= 0 
SCAN 
		l=l+ 1 
		getchild(Id)
	ENDIF 
ENDSCAN  
ENDIF 
А что теперь с єтими курсорами ('c'+ALLTRIM(STR(l)))?
Как их уничтожить?
...
Рейтинг: 0 / 0
Копирование ветки дерева (иерархии)...
    #32543011
alexFV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКак их уничтожить?
use in '<Имя курсората/таблицы>'

А насчет рекурсивных вызовов. Я как-то использовал их, но однажды столкнулся с ограничением Fox-а, т.е. больше определенных рекурсивных вызовов быть не может! Сейчас стараюсь обходиться без них.
...
Рейтинг: 0 / 0
Копирование ветки дерева (иерархии)...
    #32543025
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели никто не пользуется рекурсивными функциями?..

Как правило, никто не пользуется приведенной структурой для хранения дерева в "чистом виде". Обычно либо вводят дополнительные поля, облегчающие запросы, либо вообще используют другую структуру для хранения иерархии.

Ну, и любую рекурсию можно решить в виде вложенных циклов и временной таблицы.
...
Рейтинг: 0 / 0
Копирование ветки дерева (иерархии)...
    #32543026
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Сейчас стараюсь обходиться без них.
А в моем случае, можно обойтись без них?
...
Рейтинг: 0 / 0
Копирование ветки дерева (иерархии)...
    #32543068
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> вообще используют другую структуру для хранения иерархии
например...
...
Рейтинг: 0 / 0
Копирование ветки дерева (иерархии)...
    #32543208
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай обсуждение здесь

http://forum.foxclub.ru/read.php?f=5&i=52997&t=52905

Там есть несколько ссылок на разные структуры
...
Рейтинг: 0 / 0
Копирование ветки дерева (иерархии)...
    #32547780
RamboSPS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
во всех этих описаниях главная слабина отсутствие 2 полей:
УникальныйНомер и признак что запись является разделом (те к типа "Каталог")
...
Рейтинг: 0 / 0
Копирование ветки дерева (иерархии)...
    #32547854
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во всех этих описаниях главная слабина отсутствие 2 полей:
УникальныйНомер

Вы невнимательно ознакомились с приведенными структурами. Во всех случаях ЕСТЬ уникальный идентификатор записи. Это создает некоторую избыточность, но никому и в голову не пришло от него отказываться

и признак что запись является разделом (те к типа "Каталог")
А этого и не должно быть!
По определению, иерархический список - это список однотипных элементов. Т.е. абсолютно одинаковых сущностей.
Если же Вы хотите ввести деление по типу "Каталог" - "Файл", то, как минимум, это разные сущности, которые вообще-то должны хранится в разных таблицах. В подобной ситуации делается отдельная таблица для хранения только иерархии и отдельная таблица с признаками сущностей, которые имеют внешний ключ (ссылку) на элемент иерархии.
...
Рейтинг: 0 / 0
Копирование ветки дерева (иерархии)...
    #32547887
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я в своём междумордии использовал структуру

ветка c(254), значение c(254)

где ветка это

пункт такой-то\его подпункт\подпункт подпункта

не везде это подойдёт но работает очень быстро т.к. вфп быстро ищет по началу строки. Я использовал для хранения настроек.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Копирование ветки дерева (иерархии)...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]