powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
23 сообщений из 23, страница 1 из 1
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171746
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ноги растут отсюда.\r
Есть ли на этот счет какие-либо мысли, кроме обработки в цикле всего подряд?
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171809
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может сделаем библиотеку функции для автоматизации всей рутины при работе с деревом? ))
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171814
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>может сделаем библиотеку функции для автоматизации всей рутины при работе с деревом? ))

Да эта библиотека уже есть. На одном из сайтов для акеса лежит - так и называется "билиотека для тривью" Только лично я ей не пользуюсь - не удобно и громоздко. Но для самообразования в самый раз.
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171818
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а поиск там есть?
ссылку дал бы ?
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171824
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли какая-либо функция, метод, свойство, опыт... по перемещению (программно) по веткам дерева? Т.е. от высшего к низшему или наоборот (просмотр содержимого вложенных папок конкретного родителя).
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171829
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем искать в дереве? Искать надо в реляционных данных, по которым дерево строится. В идеале порядковый номер записи в определенном образом упорядоченном наборе записей соответствует индексу ноды. Чтобы этого добится надо изучатиь теорию. Ссылки приведены там, откуда ноги растут.
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171889
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По своему опыту создания, наблюдение за чужими и использование деревьев, я зделал для себя несколько выводов:

1. Это очень удобно для многих целей. И товары на складе тому не исключение. На автомобильном складе я наблюдал более 5 вложений и в конечной группе моря наименований, но когда структура хорошо продумана - все, даже новенькие, спокойно ориентируются в дереве.

2. Для удобства выбора, писка и порядка вывода вложенных ветвей и значений самое грамотное решение было организовано через текстовое поле + хранимые процеду его заполняющие. Само текстовое поле имело для каждого уровня вложения 5 знаков, можно и больше но не думаю что-б для одной ветки было 10 000 вложений следующего уровня.
Пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
 -- Для подобного дерева:
 
+- Root  1 
|   |
|   +- Sub  1  Root  1 
|   |
|   +- Sub  2  Root  1 
|
+- Root  2 
    |
    +- Sub  1  Root  2 
    |
    +- Sub  2  Root  2 

 -- Выходит следующая таблица:
 
+ ------+--------+---------------------+------------------+
 
|  ID  | Parent | Full_Path           | Name             |
+ ------+--------+---------------------+------------------+
 
+     0  +       0  +                     + Root Folder      +
+     1  +       0  +  00001                + Root  1            +
+     2  +       0  +  00002                + Root  2            +
+     3  +       1  +  0000100001           + Sub  1  Root  1      +
+     4  +       1  +  0000100002           + Sub  2  Root  1      +
+     5  +       2  +  0000200001           + Sub  1  Root  2      +
+     6  +       2  +  0000200002           + Sub  2  Root  2      +
+ ------+--------+---------------------+------------------+
 
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171892
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не самое грамотное, но самое быстродействующее решение.
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171897
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мое видение проблем при поиске.
- Создовать Node только на основе уникального ключа (PrimaryKey)
- При поиске искать в таблице, запоминать ключ, а далее TV.SelectedItem (НайденныйКлюч)

А вот если надо найти вхождение (Like "*вася*) , тогда просто на основе этого запроса заново построить дерево (т.е. должна быть функция, которая в качестве парметра принимает Источник для дерева - запрос или рекодсет) либо (взависимости от логики) показать первый найденный элемент.

Предусмотреть "отмену" поиска - тогда загружаем дерево полностью.

Возможно, при построении дерева возникнет ситуация, когда по добавляемому Узлу еще нет Родителя. В таких случаях самое простое запоминать такие Узлы (их PrimaryKey) в массиве, а далее фильтр (rs.Filter=Массив) и заново на цикл.

Поругайте меня за алгоритм, что ли...
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171907
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Кто про что, а вшивый про баню". Так и я. Ну есть мечта. Распечатать на бумаге, то что в форме с деревом "нахимичилось". Или хотя бы данные во временной таблице так организовать, чтобы они последовательно расположились, как в дереве. Они в дереве УЖЕ организованы. Строить механизм их организации отдельно от дерева (независимо от его существования) отдельная песня.
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171923
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2all

у меня есть не понимание : для чего нодо дерево?

если для быстрого поиска, то слишком много для этого нужно сделать работы
ситематизировать (товар,...) следить за тем чтоб не путали. и тд
я подсчитыва нажатия операторами (для дерева теоритическ) и по поиску как сделано у меня . не в пользе дерева.
особенно когда есть много товара отличающегося в названии на 1-2 символа
у меня набирают 3-6 символов из них есть ключевые и всё в спичке раскрывается не более 3-5 строк . и никакой проблемы с каталогизацией.
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171936
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2вадя, а когда механизм подобный твоему сопряжен с деревом скорость поиск возрастает в разы!

Хотя спорить не стану если проще определить 5-10 (фиксированное) полей, то проще их просто вывести и в зависимости от выбора по ним и искать...

Одним словом: Каждой задачке, своя торпеда!
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171944
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадя
у меня есть не понимание : для чего нодо дерево?

С моей точке зрения - в основном, для отображения информации. Блоки которые не нужны в данный конкретный момент, свернуты, нужные развернуты. Уровень детализации пользователь выбирает сам. Надо подробнее - разворачивай. Не надо - сворачивай. У меня например в форме при выделении узла в связанных субформах отображается подробная информации из связанных таблиц, которую можно редактировать. А поиск - дополнение к дереву (и не обязательно в самом дереве), как необязательный, а желательный, сервис. И, как уже говорили многие, эффективнее искать в таблице, затем по ключу делать выделенным соответствующий узел.
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171945
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>у меня есть не понимание : для чего нодо дерево?

1. для удобного отображения информации
2. для удобного отображения информации
3. для удобного отображения информации

Если для твоей программы дерево не удобно - не используй!

З.Ы.
Условный пример:
Есть товар который надо привязать к какой-либо группе (уровень вложенности групп может быть не ограничен). Разрешаем пользователю самому создавать группы товаров (в противном случае, необходимо создать нужное кол-во таблиц, но тогда пользователю будет не возможно ввести еще одну грппировку).
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171948
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Без четкой организации классивикациии товара, товар не товар а свалка. Менеджеру необходим поиск не столько по названию, сколько по группе товара, а то появился на складе новый товар, а еще два месяца ищут старый с старым названием.
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171956
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня комбинированное решение - деревом ограничивается набор, причем в тривью выведено фактически несколько деревьев (при выборе узлов в разных деревьях результирующий набор - пересечение), плюс к этому быстрый поиск по первым буквам в уже ограниченном наборе (можно заменить на поиск не с начала, а с любого места, или вообще сделать вместо поиска еще одну фильтрацию). На мой взгляд весьма удобно. На взгляд пользователей тоже (и слава богу).
В принципе дерево можно было заменить набором комбобоксов, ибо количество деревьев и максимальная глубина вложенности фиксирована. Если бы это делал я - еще бы подумал, стоит ли тривью использовать. Но так как это сделали до меня - пусть живет. Все таки получилось наглядно и для меня беззатратно.
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32171985
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Сенин Виктор
Извини, я не понимаю зачем для группировки НЕОГРАНИЧЕННОЕ число уровней вложенности. Хам трамвайный в соседнем топике правильно сказал, что достаточно 3-4 уровней. И зачем пользователям давать возможности создания новых уровней группировки. Надо дать им эти 3-4 - и пусть ими грамотно пользуются.
От балды: средняя заполненость одного уровня - 10 элементов. При 4 уровнях - 10000 товаров. Уже хорошо. Можно ввести параллельную (вторую) каталогизацию, по признакам, логически отличающимся от признаков, входящих в первую. Еще 10000. Причем общее кол-во - не 20000, а 100000000.
Время на создание 8 таблиц, кучки запросов и комбобоксов - очень мало по сравнению с гимором для структуры, описывающей каталог с произвольной стуктурой вложенности + код для нормальной работы с ненормальными данными.
Отображать это можно деревом, если так удобно.
В итоге получаем менее гибкую систему (сложнее добавлять уровни, если таки понадобится), но более простую работу с данными. Не надо парсить никакие текстовые строки, задаваться вопросом "как мне узнать все содержимое какого-либо узла", мучаться с распечаткой отчетов и т.п. Все рашается самым простым SQL.
Но, конечно
Каждой задачке, своя торпеда!
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32172002
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный
Извини, я не понимаю зачем для группировки НЕОГРАНИЧЕННОЕ число уровней вложенности.
А теперь эти слова - да конструктору. А то напридумывали - "изделие состоит из узлов, узлы из блоков, блоки из других блоков, которые из третьих, в которых в свою очередь есть четвертые, а они, подлецы, тоже "не истина в последней инсталяции"...
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32172013
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Лоху
>Но, конечно
Каждой задачке, своя торпеда!

Энто точно. Моя торпеда хочет сама создавать грппировки (про бесконечность это загнул.) Но на этапе разработки не понятно скольок будет окнечных уровней. Допустим я решу 8 - делаю 8 таблиц. А надо 3. Прийдется оставшеся 5 дублировать - пока не спустимся на нижний уровень к кторому привязаны элементы. Или: пройдет полгода-год - захотят в связи с просьбами отдела маркетинга расширить группировку- надо делать 9 таблицы, а это значит проделать огромную работу. И не факт что через год они опять не возжелают чего-либо (например, сократить до 3). Вот такая абракадабра :)
Поэтому, плюнув на все, я сделал в виде дерева (как способ хранения). Но, правда, решил ограничить уровень вложенности (задается для каждой сущности свой), но еще не привязал к проге. Таким образом потратив немерянное кол-во времени я избавил себя (а вполне возможно и будующего программера) от этой дурацкой проблемы - неопределнности компании в своих группировках. Вчера, например, оказалось что один из директоров придумал свою структуры Персонала. Я ее не видел...но проблем быть не должно.
Пусть балуются


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

З.Ы.
Для тех прог, которые я пытаюсь продать через инет, деревья делать не буду - только списки и жесткая структура. Ничего баловать мало платящих

З.Ы.Ы.
Вспомнил еще два плюса в защиту деревьев.
1. Как-то на собеседовании у меня спросили умею ли я работать с mscomctl. Тогда не умел - не взяли (может и не поэтому во все)
2. Один из заказчиков, увидев возможность ListView по сравнению со списком Акеса, воскликнув "Это по-взрослому" и дал бабок для переделки.
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32172023
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Витал
Все равно число уровней группировки - конечное (и скорее всего заранее известное). Никто не будет изделия до молекул каталогизировать. А если оно большое - стоит подумать, не разбить ли эту группировку на несколько независимых.
К тому же этот пример ("изделие состоит из узлов, узлы из блоков, блоки из других блоков, которые из третьих") - немного из другой оперы. Очень похоже, но не то. Это проблема комплектации изделий из примитивов. Под нее и решение свое (имхо).
Что же касается отображения - когда человек продает автомобиль ему не захочется видеть в тривью список автомобилей, каждый из которых раздрочен до составляющих его гаек. Когда механик выписывает счет за ремонт двигателя - ему не нужна каталогизация машин по цвету, году выпуска, и т.п.
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32172031
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Сенин Виктор
Да все понятно. Надо. Иногда надо. Беда в том, что задача очень частая, стандартными средствами не реализуется, кода писать все-таки много, и гораздо проще убедить себя в том, что оно и не надо .
У меня уже полгода в голове мысль бродит - сделать своими ручками нормальный компонент для програмной работы с древовидными структурами. Под мое собственное видение проблемы. Может такое уже и есть - мне пофиг, для самообразования полезно. И ActiveX контрол в придачу, для смежной задачи (отображение - пользовательское управление).
Если таки соберусь - начну его пихать во все свои проекты и перейду из стана (условно) противников тривью в стан сторонников
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32172033
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лоху Позорному
Это проблема комплектации изделий из примитивов. Под нее и решение свое (имхо).
Если не секрет & если не деревянное, то какое?
...
Рейтинг: 0 / 0
Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
    #32172049
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Витал
Не секрет, но расписывать сейчас не буду. Переформулирую мысль:
При работе со сложными (составными) изделиями возникает (в моих задачах) куча других вопросов помимо отображения/каталогизации. Учетные вопросы, динамическое изменение изделий, сборочные визарды, проверки на совместимость и т.п. Все это выливается (у меня) в какую-то немерянную эпидерсию :((. Оно перестает влезать даже в древовидные структуры, разрастается до каких-то экспертных систем. Там уже не до деревьев, и без того гимора хватает. Разобраться бы хоть с фиксированным количесвом уровней вложенности, и то хорошо. Это уже отдельная тема, поэтому на фиг ее. Аминь.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Целиком ЗА! предложение Виктора Сенина о поиске в дереве!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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