|
|
|
| есть маршрутные карты (деталировки) на изготовление узлов/изделий - ясен пень это деревья, но собрать деталировку на изделие 50 и выше деталей комп просто отвисает на несколько минут и радостно думат.
я хочу создать отдельную таблу куда будет фиксироваться дерево узлов - понято что не правильно, понятно что избыточность + гемор с отслеживанием, но быстрота работы с деревом будет неоспорима.
поддержите мну в этом дополнительном геморе | |
|
| |
|
|
|
| поддерживаю!
А поподробнее о деталировке можно?
Почему это дерево?
(или я дерево) | |
|
| |
|
|
|
| деталировка как и маршрутная карта это куча вложений друг в друга
Изделие
____ деталь 1
______узелок 1
________ узелочек 8
________ узелочек 554
________ узелочек 846
________ узелочек 8
______узелок 2
________ узелочек 8334
________ узелочек 83223
________ узелочек 822
______узелок 3
______узелок 4
____ деталь 2
______узелок 8
______узелок 12
______узелок 341
______узелок 454
и т.д. и т.п. и хранится только деталировка первого уровня, от куда при надобности каждый раз вытаскивается все до материалов.
обрабатывается рекурсией (примеры я тебю высылал).
но хранить полное древо - нет нужды т.к. оно может поменяться в любой момент да и не кошерно это, вот я и прошу подержать мну в этом неправильном действу.
не правильном с точки зрения нормализации, избыточности и проч. | |
|
| |
|
|
|
| Т.Е. при выборе изделия заполняется дерево на это изделие и далее, гуляя по нему, делаем изменения. Так что ли? Так это вроде нормально. А что если вид дерева сделать не деревянным, а списочным. Место в _____ будет занято.
В чем должна быть поддержка? | |
|
| |
|
|
|
| я хочу заморозить дерево. полностью - не только первые ветви - а в се дерево до последней ветки, дабы обращение к нему было ускорено, но "морально-этические нормы" мне не дают покоя, так низя делать. | |
|
| |
|
|
|
| чета сдается мне что все дерево не нужно сразу загружать
юзер не оценит того что вы все дерево просчитаете за один раз - просто не увидит
по мере открытия узлов расчитывать нужные ветки и подгружать
но это так дурные мысли посетившие пустую голову | |
|
| |
|
|
|
| нет им нужно все древо, т.к они отмечают яго контроль, и мало того скорее всего попросят выделить (не дть доступ) к уже утвержденным и откаченнмым узлам | |
|
| |
|
|
|
|
| я наверное - бестолочь, но со снайпером солидарен в том плане, что не надо всё дерево сразу грузить.
Человек всё равно его всё - не охватит.
Всё равно больше одной ветки не проштудируешь.
Взять реестр виндовс.
Дерево охр.....ное, но изначально видно тока несколько разделов и только постепенно открывая - добираемся до нужного места.
Потом переходим в корень и опять по другому разделу - так же.
Зачем грузить всё дерево - если, даже - в двух ветках одновременно работать - ни за что ни кто не сможет?
Только в одной ветке.
Потому нужны закладки - это возможно нужно.
Таблица закладок может пригодиться, но грузить и тем более разворачивать, нужно только то, что актуально в данный момент.
Тада о тормозах можно забыть - как о кашмарррррном сне | |
|
| |
|
|
|
| если подгрузка уровней при обращении не подходит, то
подерживаю. причем двумя руками.
но нужно как следует продумать обновление этой таблицы. | |
|
| |
|
|
|
| всем спасибо, будем пыхтеть | |
|
| |
|
|
|
| Два дня уже пытаюсь осмыслить указанную проблему, т.к. тоже кое-где использую "дерево".
Уже и веток понаделал с уровнем вложенности >80, и даже небольшую ошибку у себя нашел, но ...
Где те грабли на которые я, видимо, пока не наступил?
Да есть задержка секунда, другая, но минуты!!!
Можно все-таки немного поподробнее описать проблему:
- как хранится дерево? структура таблицы, т.к. - не понял фразу: "...хранится только деталировка первого уровня...". Т.е. дерево (узлы дерева) не все хранится в одной таблице? Это очень интересует.
- где происходит задержка: вниз или вверх по дереву от узла;
- связана ли задержка с необходимостью собирать дополнительные данные по каждому узлу; в идеале, конечно было бы проще сравнивать с получением собранной структуры дерева только с "ключами узлов";
- каков приблизительный объем самой тугодумной ветки дерева (уровней вложенности, дочерних узлов на каждом уровне);
- задержки возникают при отображении на экран? Тогда, каким способом производится отображение: ActiveX или еще как?
Заранее извиняюсь за столько вопросов, но сверлит в башке - ночи не сплю . | |
|
| |
|
|
|
| Почему сверлит у тебя, - это у кота сверлить должно - и так и есть, а у тебя секунда другая и аля улю.
А Кот_Т_Т он рекурсией дерево заролняет - оттого и задержка, а может так случится, что рекурсия вааще зависнет от переполнения памяти..... | |
|
| |
|
|
|
|
| Я те по секрету скажу.....
Вот кот разрулит праблему, придёт сюда, и всё тебе расскажет.......
Так шо пока расслабевайся и наслаждайся!
Может он её и собирает, а может и заполняет, а может и создаёт суть не в терминологии а в деталировке! | |
|
| |
|
|
|
| по порядку
как хранится дерево? структура таблицы, т.к. - не понял фразу: "...хранится только деталировка первого уровня...". Т.е. дерево (узлы дерева) не все хранится в одной таблице? Это очень интересует.
|
табла следующая
- код_узла,
- код_материала,
....параметры...
код_вложенного_узла (если не материал а узел)
- этим самым создаю внутри таблы "рекурсивную ссылку" для построения следующего слоя дерева т.к. код_вложенного_узла и код_узла это одо и тоже значение из таблицы "Узлы"
храню только первый уровень, т.к. хранить полное дерево думаю не правильно - пришлось сложнее ваять таблу + хранить уйму инфы которая хранится в "другом" месте этой же таблы.
задержка происходит при сборке дерева - какого-то хрена на элементарную вещь
set rs=dbs.openrecordset("select * tabla where kod=" & ar(0))
машина раздупляет порядка 5 сек
сама прога mdb - mdb файлы, юзеров больше 10-ка, компы от 2-4 х ядерных до 4-х пней, но подвисания происходя везьде - записей не миллионы. Офис ХР, может какая б. воткнула 2003 или 2007 - но я вроде контролю эти поползновения, путем легкой кастрации.
а юзеры будут (уверен) требовать открытия усего древа - т.к. ОТК и им нужно отметить нужные узелки и даже материалы о прохождении контроля, а истерично тыкакть в "+" до открытия нужной ветки как-то не кошерно
думаю создавать полное древо на момент "фиксации" его (можно повесить на выдачу ТМЦ по лимитно-заборной карте), т.к. им нужно каждое из деревьев юзать. | |
|
| |
|
|
|
| деталировка как и маршрутная карта это куча вложений друг в друга
Изделие
____ деталь 1
______узелок 1
________ узелочек 8 ********
________ узелочек 554
________ узелочек 846
________ узелочек 8
______узелок 2
________ узелочек 8334
________ узелочек 83223
________ узелочек 822
______узелок 3
______узелок 4
____ деталь 2
______узелок 8 ***********
______узелок 12
______узелок 341
______узелок 454
узелок8 входит и в разные сборки и разные изделия
имела дело с подобной задачей и таблицами
-основные
*изделие,головная сборка
*деталь.куда,деталь.что,применяемость(например 8 гаек м12 на данном этапе описания изделия)
*деталь,нормы материалов и прочие
-рабочие(расчетные)
изделие,деталь,комплектация(8 гаек в одном узле +2 в другом+4 в третьем,которых может быть 3, даст с итоге 22 гайки, если же узлы входят один в другой --то итог зависит от входимости)
идея расчета:сначала считается изделие, а затем уже присоединяются нормы с группировкой итогов
в большинстве случаев время расчета и гибкость полученных результатов -приемлемы
кстати :несмотря на большое количество деталей в изделиях и многовариантность самих изделий --уровень входимости не превышал 15
просчитывались также и комплекты изд-сборок-деталей в любом сочетании для поставки внешним потребителям) например поставка 2 изд1+12 изд128+100 узлов у1+100 комплектов деталей для внешней сборки у2 и т.д.
|
| |
|
| |
|
|
|
| kot_k_k
Спасибо за ответ.
Вижу, что существуют различия, которые не позволяют мне применить описанную проблему с задержкой к моей реализации.
Из описанного, понял, что в таблице это выглядит так:
код_узла код_материала код_вложенного_узла
-------------------------------------------------
Код_Изделие Код_деталь1 Код_узелок1
Код_Изделие Код_узелок1 Код_узелочек8
Код_Изделие Код_узелочек8 <пусто>
Код_Изделие Код_узелок1 Код_узелочек554
Код_Изделие Код_узелочек554 <пусто>
Код_Изделие Код_узелок1 Код_узелочек846
Код_Изделие Код_узелочек846 <пусто>
|
Поэтому, указав set rs=dbs.openrecordset("select * tabla where kod=" & ar(0)) - получаем нужную ветку, далее рекурсия.
У меня, немного другая структура таблицы:
код_узла код_родителя
-----------------------------
Код_Изделие <пусто>
Код_узелок1 Код_Изделие
Код_узелочек8 Код_узелок1
Код_узелочек554 Код_узелок1
Код_узелочек846 Код_узелок1
|
При этом, ветка определяется только кодом начального узла ветки, далее рекурсия.
Не знаю, верно ли я изначально определился со способом реализации "дерева". | |
|
| |
|
|
|
|
ла код_материала код_вложенного_узла
-------------------------------------------------
Код_Изделие Код_деталь1 Код_деталь1 (в списке узлов)
Код_Изделие Код_деталь2 Код_деталь2 (в списке узлов)
Код_Изделие материал_1 Null
это всё что относится к Код_Изделие - и далеле но это уже другая часть которая тянется рекурсией
Код_деталь1 (в списке узлов) Код_узелок1 Код_узелок1 (в списке узлов)
Код_деталь1 (в списке узлов) Код_узелок2 Код_узелок2 (в списке узлов)
Код_деталь1 (в списке узлов) Код_узелок3 Код_узелок3 (в списке узлов)
Код_деталь1 (в списке узлов) материал_2 Null
и т.д.
|
вот так | |
|
| |
|
|
|
| голова плохо переваривает вашу терминологию
схема наших расчетов
--выбираем некоторую начальную позицию из таблицы куда-что-применяемость(сколько что входит в сборку)
--рекурсия для получения деталь-комплектация(суммарная входимость отдельных деталей в выбранную сборку)
--стыковка со справочником деталь-материал с подведением итогов по потребности в материалах или еще чем-то | |
|
| |
|
|
|
| ой. так-да.
как я таки погляжу проблем с деревом у многих и в том числе о его выводе на екран.
их нет у кто сидит на SQL если я не обшибаюсь - там есть рекурсивные запросы которые позволяют раелизовать логик дерава. | |
|
| |