Динамическая смена ParentId в дереве

Обсуждение MAV Direct ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
OVV
Бывалый
Сообщения: 58
Зарегистрирован: 21 Сентябрь 2005, 10:41
Откуда: Московская область

Динамическая смена ParentId в дереве

Сообщение OVV »

Приветствую Всех!

Вопрос, видимо, к Андрею:

В таблице хранится список подразделений. Одни подчиняются другим, т.е. дерево. Но группировать дерево надо по разным типам родителей: по территориальному признаку и по хозяйственному. У записи, естественно, два ParentId.
Сейчас сделано так: объявлен алиас таблицы, на заладках лежат два брауза. Ненужный тип родителей в браузе фильтруется.
Работает, но не очень нравится: синхронизировать надо, добавлять кнопари в 2-х экземплярах...

Хотел сделать все это в одном браузе:
В BRWx:Tree.Init по условию устанавливал SELF.ParentField &= ...
и при выборе закладки делал
BRWx:Tree.Init
BRWx:Browse.Load

но дерево по другим родителям не перестраивается.
Изучение TMAV.INC новых идей не принесло.

Возможно ли сделать такое?
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Re: Динамическая смена ParentId в дереве

Сообщение Andrew™ »

OVV писал(а):Приветствую Всех!

Вопрос, видимо, к Андрею:

В таблице хранится список подразделений. Одни подчиняются другим, т.е. дерево. Но группировать дерево надо по разным типам родителей: по территориальному признаку и по хозяйственному. У записи, естественно, два ParentId.
Сейчас сделано так: объявлен алиас таблицы, на заладках лежат два брауза. Ненужный тип родителей в браузе фильтруется.
Работает, но не очень нравится: синхронизировать надо, добавлять кнопари в 2-х экземплярах...

Хотел сделать все это в одном браузе:
В BRWx:Tree.Init по условию устанавливал SELF.ParentField &= ...
и при выборе закладки делал
BRWx:Tree.Init
BRWx:Browse.Load

но дерево по другим родителям не перестраивается.
Изучение TMAV.INC новых идей не принесло.

Возможно ли сделать такое?
надо пробовать и это не так просто, в зависимости от ParentField много доп структур делается, я бы сделал проще, одна Browse, НО
в качестве имени в DCT регистриуем переменную с атрибутом THREAD
теперь две задачи, в каждом потоке её надо не забывать инициализировать, как это проще сделать применительно к C6x
заводим глобальный класс с атрибутом THREAD и делаем реализацию конструктора, в котором этой переменной глобальной имени файла присваиваем правильное (default имя) значение

в БД строишь столько View с колько надо для построения деревьев, они по сути будут совпадать со структурой таблицы, за исклбючением одного в одной VIEW в качестве ParentID поля будет выступать одно поле таблицы, для другой - другое, имя через AS сделать одно и тоже

и теперь когда надо переключится на другое дерево, меняем имя VIEW - глобальную переменную которая закреплена за именем, и делаем обычный .Load

ещё есть вариант - в качестве загрузчика закрепить ХП с параметрами и возвращать требуемые SELECTы, они будут по идее совпадать но в качестве ParentID будет то одно, то другое поле таблицы
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

ДАВАЙ ПРИМЕР

Сообщение Andrew™ »

будет пример APP/DCT с двумя TreeBrowse по одному файлу, скрипт на создание и наполнение таблицы, тогда и решение без объявления доп структур на сервере и DCT покажу в нём

на пальцах могу объяснить, но всё равно что то упущу.
OVV
Бывалый
Сообщения: 58
Зарегистрирован: 21 Сентябрь 2005, 10:41
Откуда: Московская область

Сообщение OVV »

надо пробовать и это не так просто, в зависимости от ParentField много доп структур делается,
Я в принципе, подозревал, что все не так просто. :)

Спасибо за совет, буду пробовать.
Ответить