FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9239
Вход
Дерево по словарю, связанного отношением само-на-себя

Данный класс представляет данные в древовидной структуре (исп. TreeView) таблицу, со структурой связи сама-на-себя. В классе присутствует как компонент чистого отображения, так и поиск по дереву. ЗЫ добавлена поддержка ИД-полей с числовым типом и заточена работа от 6.0 до 9.0 версий Фокса ЗЫЫ багофикс найденный flaxby. Непрально показывалось число найденных узлов + кой ч:е найденое не показывалось при определенных условиях


 
Прислал: Hel!Riser   Категория: Интерфейс


Дерево по словарю, связанного отношением само-на-себя

В архиве содержится краткое описание класса, таблица и форма с примером пользования.

 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (4.891) Вложение [81.89]kb
Дополнения пользователей
Дерево по словарю, связанного отношением само-на-себя
[+][?]
Владимир Максимов
14.09.01 12:16:41

Определить есть или нет дочернии элементы у каждого узла дерева для выбранного родителя можно и
без помощи SEEK(). Прямо одним запросом.

Если использовать поля из таблицы данного примера, то это будет выглядеть так:

LOCAL lcParentID
lcParentID = Tovar.Tovar_id && Код родителя, для которого строится ветка

SELECT a.Tovar_id, a.Extern_id, a.name, ;
NOT IsNull(b.Tovar_id) as IsChild ;
FROM Tovar a ;
LEFT OUTER JOIN Tovar b ON a.Tovar_id=b.Extern_id ;
INTO CURSOR qSubTree NOFILTER ;
WHERE a.Extern_id=lcParentID ;
GROUP BY 1,2,3 ;
ORDER BY a.name

В результате, получится таблица с дополнительным логическим полем IsChild принимающем значение .T.
- если у данного элемента есть дочернии элементы и .F. - если нет.

В опции Group By следует перечислить все поля, кроме IsChild для исключения повторяющихся
значений.

Если убрать Group By, то еще одним запросом можно будет подсчитать количество дочерних элементов.

Такой способ (один запрос) очень удобен для клиент-серверных приложений.
HellRiser
14.09.01 13:39:11

Рулез! Спасибо за совет
Парамаунт-Фокс Александр
20.10.03 20:26:34

У меня работает правильно, если GROUP BY 2,1,3,4
[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика