Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: поддержите мну
 
 автор: kot_k_k   (29.10.2011 в 12:11)   личное сообщение
 
 

есть маршрутные карты (деталировки) на изготовление узлов/изделий - ясен пень это деревья, но собрать деталировку на изделие 50 и выше деталей комп просто отвисает на несколько минут и радостно думат.
я хочу создать отдельную таблу куда будет фиксироваться дерево узлов - понято что не правильно, понятно что избыточность + гемор с отслеживанием, но быстрота работы с деревом будет неоспорима.

поддержите мну в этом дополнительном геморе

  Ответить  
 
 автор: час   (29.10.2011 в 12:22)   личное сообщение
 
 

поддерживаю!
А поподробнее о деталировке можно?
Почему это дерево?
(или я дерево)

  Ответить  
 
 автор: kot_k_k   (29.10.2011 в 13:10)   личное сообщение
 
 

деталировка как и маршрутная карта это куча вложений друг в друга
Изделие
____ деталь 1
______узелок 1
________ узелочек 8
________ узелочек 554
________ узелочек 846
________ узелочек 8
______узелок 2
________ узелочек 8334
________ узелочек 83223
________ узелочек 822
______узелок 3
______узелок 4
____ деталь 2
______узелок 8
______узелок 12
______узелок 341
______узелок 454

и т.д. и т.п. и хранится только деталировка первого уровня, от куда при надобности каждый раз вытаскивается все до материалов.

обрабатывается рекурсией (примеры я тебю высылал).

но хранить полное древо - нет нужды т.к. оно может поменяться в любой момент да и не кошерно это, вот я и прошу подержать мну в этом неправильном действу.

не правильном с точки зрения нормализации, избыточности и проч.

  Ответить  
 
 автор: Гоблин   (29.10.2011 в 16:15)   личное сообщение
 
 

Т.Е. при выборе изделия заполняется дерево на это изделие и далее, гуляя по нему, делаем изменения. Так что ли? Так это вроде нормально. А что если вид дерева сделать не деревянным, а списочным. Место в _____ будет занято.
В чем должна быть поддержка?

  Ответить  
 
 автор: kot_k_k   (29.10.2011 в 18:47)   личное сообщение
 
 

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

  Ответить  
 
 автор: snipe   (29.10.2011 в 19:29)   личное сообщение
 
 

чета сдается мне что все дерево не нужно сразу загружать
юзер не оценит того что вы все дерево просчитаете за один раз - просто не увидит
по мере открытия узлов расчитывать нужные ветки и подгружать
но это так дурные мысли посетившие пустую голову

  Ответить  
 
 автор: kot_k_k   (29.10.2011 в 20:05)   личное сообщение
 
 

нет им нужно все древо, т.к они отмечают яго контроль, и мало того скорее всего попросят выделить (не дть доступ) к уже утвержденным и откаченнмым узлам

  Ответить  
 
 автор: kot_k_k   (29.10.2011 в 20:12)   личное сообщение
 
 

лазание в глубь не представляет проблем - проблем время которое оно занимам - но это не правильно- эт не кошерно, народ - скажите что так можно и нужно (я и сам заю) но геморра не преведи господь.

п.с. билять

  Ответить  
 
 автор: час   (29.10.2011 в 21:38)   личное сообщение
 
 

я наверное - бестолочь, но со снайпером солидарен в том плане, что не надо всё дерево сразу грузить.
Человек всё равно его всё - не охватит.
Всё равно больше одной ветки не проштудируешь.
Взять реестр виндовс.
Дерево охр.....ное, но изначально видно тока несколько разделов и только постепенно открывая - добираемся до нужного места.
Потом переходим в корень и опять по другому разделу - так же.
Зачем грузить всё дерево - если, даже - в двух ветках одновременно работать - ни за что ни кто не сможет?
Только в одной ветке.
Потому нужны закладки - это возможно нужно.
Таблица закладок может пригодиться, но грузить и тем более разворачивать, нужно только то, что актуально в данный момент.
Тада о тормозах можно забыть - как о кашмарррррном сне

  Ответить  
 
 автор: osmor   (29.10.2011 в 22:28)   личное сообщение
 
 

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

  Ответить  
 
 автор: kot_k_k   (31.10.2011 в 08:52)   личное сообщение
 
 

всем спасибо, будем пыхтеть

  Ответить  
 
 автор: AlexSyr   (31.10.2011 в 20:20)   личное сообщение
 
 

Два дня уже пытаюсь осмыслить указанную проблему, т.к. тоже кое-где использую "дерево".
Уже и веток понаделал с уровнем вложенности >80, и даже небольшую ошибку у себя нашел, но ...
Где те грабли на которые я, видимо, пока не наступил?
Да есть задержка секунда, другая, но минуты!!!
Можно все-таки немного поподробнее описать проблему:
- как хранится дерево? структура таблицы, т.к. - не понял фразу: "...хранится только деталировка первого уровня...". Т.е. дерево (узлы дерева) не все хранится в одной таблице? Это очень интересует.
- где происходит задержка: вниз или вверх по дереву от узла;
- связана ли задержка с необходимостью собирать дополнительные данные по каждому узлу; в идеале, конечно было бы проще сравнивать с получением собранной структуры дерева только с "ключами узлов";
- каков приблизительный объем самой тугодумной ветки дерева (уровней вложенности, дочерних узлов на каждом уровне);
- задержки возникают при отображении на экран? Тогда, каким способом производится отображение: ActiveX или еще как?
Заранее извиняюсь за столько вопросов, но сверлит в башке - ночи не сплю .

  Ответить  
 
 автор: час   (31.10.2011 в 20:32)   личное сообщение
 
 

Почему сверлит у тебя, - это у кота сверлить должно - и так и есть, а у тебя секунда другая и аля улю.
А Кот_Т_Т он рекурсией дерево заролняет - оттого и задержка, а может так случится, что рекурсия вааще зависнет от переполнения памяти.....

  Ответить  
 
 автор: AlexSyr   (31.10.2011 в 20:57)   личное сообщение
 
 


Ну наверное не заполняет, а собирает структуру дерева рекурсией.
Так, пока, кроме этого ничего лучше, вроде, и не придумали.
А почему мне это интересно?
Потому, что если есть проблема, то лучше заранее знать о ней и быть готовым.
Пока что я не могу понять ее, поэтому боюсь ее.

  Ответить  
 
 автор: час   (31.10.2011 в 23:50)   личное сообщение
 
 

Я те по секрету скажу.....
Вот кот разрулит праблему, придёт сюда, и всё тебе расскажет.......
Так шо пока расслабевайся и наслаждайся!

Может он её и собирает, а может и заполняет, а может и создаёт суть не в терминологии а в деталировке!

  Ответить  
 
 автор: kot_k_k   (01.11.2011 в 09:49)   личное сообщение
 
 

по порядку


как хранится дерево? структура таблицы, т.к. - не понял фразу: "...хранится только деталировка первого уровня...". Т.е. дерево (узлы дерева) не все хранится в одной таблице? Это очень интересует.


табла следующая
- код_узла,
- код_материала,
....параметры...
код_вложенного_узла (если не материал а узел)
- этим самым создаю внутри таблы "рекурсивную ссылку" для построения следующего слоя дерева т.к. код_вложенного_узла и код_узла это одо и тоже значение из таблицы "Узлы"
храню только первый уровень, т.к. хранить полное дерево думаю не правильно - пришлось сложнее ваять таблу + хранить уйму инфы которая хранится в "другом" месте этой же таблы.
задержка происходит при сборке дерева - какого-то хрена на элементарную вещь
set rs=dbs.openrecordset("select * tabla where kod=" & ar(0))
машина раздупляет порядка 5 сек
сама прога mdb - mdb файлы, юзеров больше 10-ка, компы от 2-4 х ядерных до 4-х пней, но подвисания происходя везьде - записей не миллионы. Офис ХР, может какая б. воткнула 2003 или 2007 - но я вроде контролю эти поползновения, путем легкой кастрации.

а юзеры будут (уверен) требовать открытия усего древа - т.к. ОТК и им нужно отметить нужные узелки и даже материалы о прохождении контроля, а истерично тыкакть в "+" до открытия нужной ветки как-то не кошерно

думаю создавать полное древо на момент "фиксации" его (можно повесить на выдачу ТМЦ по лимитно-заборной карте), т.к. им нужно каждое из деревьев юзать.

  Ответить  
 
 автор: shanemac51   (01.11.2011 в 11:38)   личное сообщение
 
 

деталировка как и маршрутная карта это куча вложений друг в друга
Изделие
____ деталь 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 и т.д.

  Ответить  
 
 автор: AlexSyr   (01.11.2011 в 14:02)   личное сообщение
 
 

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

При этом, ветка определяется только кодом начального узла ветки, далее рекурсия.

Не знаю, верно ли я изначально определился со способом реализации "дерева".

  Ответить  
 
 автор: kot_k_k   (01.11.2011 в 14:47)   личное сообщение
 
 

ла                                         код_материала    код_вложенного_узла 
------------------------------------------------- 
Код_Изделие                                Код_деталь1      Код_деталь1 (в списке узлов) 
Код_Изделие                                Код_деталь2      Код_деталь2 (в списке узлов) 
Код_Изделие                                материал_1        Null 

это всё что относится к  Код_Изделие -  и далеле но это уже другая часть которая тянется рекурсией

Код_деталь1 (в списке узлов)  Код_узелок1      Код_узелок1 (в списке узлов)
Код_деталь1 (в списке узлов)  Код_узелок2      Код_узелок2 (в списке узлов)
Код_деталь1 (в списке узлов)  Код_узелок3      Код_узелок3 (в списке узлов)
Код_деталь1 (в списке узлов)  материал_2        Null 
и т.д.


вот так

  Ответить  
 
 автор: shanemac51   (01.11.2011 в 16:44)   личное сообщение
 
 

голова плохо переваривает вашу терминологию

схема наших расчетов
--выбираем некоторую начальную позицию из таблицы куда-что-применяемость(сколько что входит в сборку)
--рекурсия для получения деталь-комплектация(суммарная входимость отдельных деталей в выбранную сборку)
--стыковка со справочником деталь-материал с подведением итогов по потребности в материалах или еще чем-то

  Ответить  
 
 автор: kot_k_k   (01.11.2011 в 17:41)   личное сообщение
 
 

ой. так-да.
как я таки погляжу проблем с деревом у многих и в том числе о его выводе на екран.
их нет у кто сидит на SQL если я не обшибаюсь - там есть рекурсивные запросы которые позволяют раелизовать логик дерава.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList