|
sql и Treeview
|
|||
---|---|---|---|
#18+
Есть таблица с данными организованными по древесной структуре. Есть ли способ осуществить выборку всех нод, подчиненных выбранной на Treeview с помощью sql? Как это сделать через рекордсет понятно, но долго работает.... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2018, 14:44 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311но долго работаетнасколько долго, какого размера таблица(примерно 1т-10т-100т записей) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2018, 15:11 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311Есть таблица с данными организованными по древесной структуре. Есть ли способ осуществить выборку всех нод, подчиненных выбранной на Treeview с помощью sql? Как это сделать через рекордсет понятно, но долго работает.... Древесные структуры разные бывают..nested sets, например. Какой у вас тип иерархических данных или просто напишит основные поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2018, 15:18 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311, Какова структура таблицы "с данными организованными по древесной структуре." Если она как на скрине,то можно использовать и качестве критерия отбора в запросе IDparents=Replace(Node.Key, "_", "") (только не понимаю зачем вся эта затея) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2018, 15:34 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311, Посмотрите тут, может подойдёт http://am.rusimport.ru/MSAccess/topic.aspx?ID=463 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2018, 18:54 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Структура как у sdku ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 04:10 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Количество записей планируется десятки тысяч. Из того что пока успел осознать - один из способов - добавить связующую таблицу с "глубиной" пути и выборку делать по ней..... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 04:34 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311Есть таблица с данными организованными по древесной структуре. Есть ли способ осуществить выборку всех нод, подчиненных выбранной на Treeview с помощью sql? Как это сделать через рекордсет понятно, но долго работает.... зависит от количества уровней вхождения --у меня было около 20(записей около 80т) --а Алекс999 более 50(была долгая дискуссия несколько лет назад) хотя я применяла в своей базе навигации не дерево, а веер входимости --таб1 --детали(код1, гравировка,наименование,.....)+несколько расчетных полей(список цехов, список изделий,...) --таб2 --состав изделия(код2,код_куда,код_что, сколько) принцип работы --динамическая посимвольная фильтрация по 10 полям в любом сочетании по таб1(гравировка, наименование,цех, изделие, годПоследнено изменения, номерИзменения......) --при клике на выбранной детали --показ кодгравировканаименованиецехаизделия....сборка101111.222.333-01втулка распорная101,102,103...055,155,255,...куда входит002111.222.000сборка.......куда входит002111.223.000сборка....что входит911333.222.222что входит911333.222.222.... при клике на строку куда/что ---переход на выбранную деталь ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 07:04 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Спасибо откликнувшимся, как заставить sql работать по дереву - боле-менее ясно.... но задача немного сложнее Дерево в таблице - спецификация сборочных узлов и деталей некоторого изделия. число узлов (позиций) в каждом изделии - несколько тысяч. Глубина уровней вложенности - до 10......(ну может и 12 -15 когда нибудь встретится). У каждой позиции есть характеристика - количество..... И оно совсем не всегда 1.... Требуется: Выбрать из этого изделия( или его части, которая определяется выделением ключевого узла на дереве) все детали или сб единицы, чьи характеристики отвечают неким условиям.... так вот.... получу я эту самую выборку позиций из таблицы... а количество из каждого пункта нужно еще перемножить на количества из Parent узлов до самой макушки.... Не, в коде VBA я написал конечно функцию, которая все делает.... но - тормозит. При количестве позиций около 2000 весь цикл получения выборки занимает минуту - полторы.... хочется как-то это ускорить.... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 07:17 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311Есть ли способ осуществить выборку всех нод, подчиненных выбранной на Treeview с помощью sql?Не очень понял вопрос. Ты хочешь с помощью языка SQL выбирать объекты (ноды) в ActiveX TreeView? Чекбоксы? Serg197311, может ты пример сделаешь со своим видением проблемы (и не просто одну таблицу приложить)? Serg197311Количество записей планируется десятки тысяч.По моему несколько бредовая идея в TreeView выбирать столько ветвей. Да и делать дерево такой величины. Кто его смотреть будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 07:20 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Пенсионерка, спасибо.... Но изменить структуру базу уже не представляется возможным..... придется мудрить с деревом.... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 07:22 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Панург, чуть выше я попробовал более подробно обьяснится.... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 07:25 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311Требуется: Выбрать из этого изделия( или его части, которая определяется выделением ключевого узла на дереве) все детали или сб единицы, чьи характеристики отвечают неким условиямА, так вон ты чего хочешь... Почитай пока вот эту эпичную тему - Оптимизация и улучшение алгоритма выборки данных о составе (структуре) Изделия ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 07:25 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311чуть выше я попробовал более подробно обьяснится....Заметил уже после написания поста. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 07:26 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Прям щас нашел ошибку( неоптимальность) в коде.... поправил.... теперь цикл - 5 сек. это уже приемлемо... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 07:36 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311Требуется: Выбрать из этого изделия( или его части, которая определяется выделением ключевого узла на дереве) все детали или сб единицы, чьи характеристики отвечают неким условиям.... так вот.... получу я эту самую выборку позиций из таблицы... а количество из каждого пункта нужно еще перемножить на количества из Parent узлов до самой макушки.. помимо 2-х основных таблиц была и третья -расчетная таб3(код3,код изделия,код детали,количество) сугубо расчетная,если надо пересчитать 055 изделие, то --из таб3 удаляется изделие 055 --по таб2 заново рассчитывается изделие 055 начиная с головы и дописывается в таб3 все основные расчеты, где нужны итоги по цех,участок, изделие,профессия,оборудование .... делались с таб3 и табТрудоемкость(наименования деталей из таб1) таб2 напрямую применялась только в расчете сборочной трудоемкости ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 07:43 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311Но изменить структуру базу уже не представляется возможным..... придется мудрить с деревом.. дерево вель основано на таблице куда+что+сколько меня только интересует, как вы описываете повторяющиеся части(один раз или в каждой ветке/изделии) например --у меня одна из деталей входила в 800 сборок 200-т изделий --у сборок количества меньше, по 10-15 повторов имели многие сборки если можете, покажите по демо -скайпу структуры --интересно сравнить мою и вашу реализации ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 07:48 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
[quot ПЕНСИОНЕРКА]Serg197311меня только интересует, как вы описываете повторяющиеся части(один раз или в каждой ветке/изделии) 1) Есть таблица 1 - общий каталог предприятия - там названия, номера изделий и их характеристики. Там есть некое подобие древесной структуры - но оно примерное.... так как там нем может быть повторяющихся записей и нет количеств, и реализовать там полноценную структуру изделия нельзя. 2) есть таблица 2 - которая содержит точную структуру изделия, количества деталей в сборках и ссылку на деталь( сборку) из главного каталога. таким образом я могу в конкретном изделии многократно использовать позиции из главного каталога ну а при выборке приходится пробегать по узлам до макушки( выбранной ноды) и перемножать количества.... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 08:19 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
имелось ввиду - в каждой строке табл2 есть ссылка(уникальный код из табл 1) на деталь из главного каталога ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 08:22 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311имелось ввиду - в каждой строке табл2 есть ссылка(уникальный код из табл 1) на деталь из главного каталога у меня таб1--это просто справочник наименований деталей/сборок таб2 --собственно состав изделия(куда+что+сколькоНаУзел), аналог вашей таб2 таб3 --после добавления наименований, это ваша ваша таб1, только в ней есть количество на изделие,рассчитывается заранее,причем сначала на временное изделие(после проверки и утверждения заменяет существующее) таб4--трудоемкость детале-операции,м:м к таб3 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 08:43 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311ну а при выборке приходится пробегать по узлам до макушки( выбранной ноды) и перемножать количества....А сколько по времени происходит заполнение дерева при таком количестве и структуре? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 09:15 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311Количество записей планируется десятки тысяч. Из того что пока успел осознать - один из способов - добавить связующую таблицу с "глубиной" пути и выборку делать по ней..... И все десятки тысяч записей нужно отобразить в развернутом TreeView? Обычно загружают только корневые элементы и подгружают ветки при их разворачивании. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 10:34 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
[quot Панург]Serg197311А сколько по времени происходит заполнение дерева при таком количестве и структуре? )))) ООООЧень хороший вопрос))) Структура и характеристики сборок содержатся в чертежа Catia. Написал код, который открывает файлы, считывает информацию, структурирует и запихивает в базу(хоть 20 чертежей сразу). Код писал долгаааааааа..... а работает он теперь быстро:)) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 11:15 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
[quot Alibek B.]Serg197311И все десятки тысяч записей нужно отобразить в развернутом TreeView? Обычно загружают только корневые элементы и подгружают ветки при их разворачивании. Нет - отобразить надо сразу 2000-3000( одно изделие), это в таблице десятки тысяч .... пока вроде работает и не тормозит и не глючит.... если что начнется, воспользуюсь вашим советом, спс.... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 11:18 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
не,не в чертежах... в 3d файлах.... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 11:20 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311, в таком случае зачем мучить дерево? Не проще сделать запросы из таблицы? Дерево же как-то заполняется из таблицы? Что от выборки потом требуется? Кстати наборы ( Recordset ) существуют разные. Есть в том числе иерархические . ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 11:34 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
ПанургSerg197311, в таком случае зачем мучить дерево? Не проще сделать запросы из таблицы? Дерево же как-то заполняется из таблицы? Что от выборки потом требуется? Ну я ж писал.... в ноду дерева будет тыкать пользователь и таким образом задавать тот набор записей( изделие целиком или одна из его сборочных единиц любого уровня вложенности) по которым он хочет сделать выборку А требуется от выборки потом быть выгруженной в Ексель .... В самой базе эта выборка никак использоваться не будет.... пока по крайней мере ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 12:02 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
ПанургSerg197311, в таком случае зачем мучить дерево?....Действительно,зачем??Может как-то по-другому (не дерево) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 12:09 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
sdkuПанургSerg197311, в таком случае зачем мучить дерево?....Действительно,зачем??Может как-то по-другому (не дерево) Гммм.... А как тогда? И самый главный момент - чтоб не все переделывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 12:16 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311, я пытаюсь тебя подвести к мысли (я не знаю насколько у тебя сложно всё), что не надо всё дерево строить (только слой который раскрыл пользователь). Ноду которую кликнул пользователь использовать как вершину выборки и от неё создавать набор/ы записей. И эти наборы отправлять в Excel. На долю TreeView оставить только представительскую функцию - посмотреть/выбрать запись. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 12:24 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Допустим форма со списком где отображаются изделия и несколькими(сколько надо)зависимыми списками:"сборочные единицы" , "детали" (и т.д. все с мультивыбором) после обновления которых выгружать выбранное ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 12:25 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
sdkuДопустим форма со списком где отображаются изделия и несколькими(сколько надо)зависимыми списками:"сборочные единицы" , "детали" (и т.д. все с мультивыбором) после обновления которых выгружать выбранное Можно и так..... нос моей точки зрения дерево - удобней и наглядней для пользователя. Тем более, что я смог сделать все более - менее приемлемым образом работающим. На это переходить буду только если встречу сверхнеобходимую задачу, которую через дерево решить не получится ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 12:33 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
ПанургSerg197311, я пытаюсь тебя подвести к мысли (я не знаю насколько у тебя сложно всё), что не надо всё дерево строить (только слой который раскрыл пользователь). Ноду которую кликнул пользователь использовать как вершину выборки и от неё создавать набор/ы записей. И эти наборы отправлять в Excel. На долю TreeView оставить только представительскую функцию - посмотреть/выбрать запись. Да, пожалуй так конечно будет правильней.... Со временем перепишу функции загрузки дерева и обработки кликов на нем.... Но пока - оно работает)) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 12:35 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
ААААА!!! я вопроса не понял!!!! Конечно - с самого дерева только код узла берется!!!! а выборки по таблице, а не по рекордсету дерева!!!! я чтото и подумать не мог чтобы по самому рекордсету дерева лазить.... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 12:40 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
а поискать слабо только без переделок навряд-ли ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 12:54 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
sdku, не слабо..... Но - зачем? Какие реальные преимущества это может мне дать? или от каких бед уберечь? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 13:14 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311, Затем что, предложили несколько вариантов без дерева,но Вы хотите именно с ним,а на мой взгляд так поставленную задачу не решить,поэтому поиск Вам в руки и ничего такого,как Вы себе придумали там нет-может быть это убедит отказаться (или использовать его только для получения корневой ноды,как советовалось еще в начале топика)от использования дерева-обратите свой взгляд на другие средства Акса ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 14:22 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
sdku, Я очень извиняюсь.... но я 4 сообщения назад подтвердил, что делаю именно так..... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 14:24 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Serg197311, Держи, сам с этим протрахался и для 2000 и для 2008 . В последнем проще есть новые возможности. Код: sql 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. 31. 32. 33. 34.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 16:08 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Я бы таки добавил в эту самую древесную структуру поле типа depth(уровень вложения, начиная с 0), чтобы дерево быстрее строить можно было. Насчет получения всех детей, можно как-то так делать(Не тестировал особо): Код: vbnet 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
С другой стороны, если у вас такие запросы часто встречаются и хотелось бы проще выборку сделать и возможно быстрее, почему бы не добавить всем "потомкам" путь до предка 0 уровня? Просто текстовое поле с кодами всех предков - "1,2,3,10,55". И тогда все это легко выводилось бы запросом вида: Код: sql 1. 2. 3.
где depth - уровень вложения предка, 1 - код предка, из которого выбирают всех детей. Из плюсов - быстрая выборка, из минусов - сложности с перемещением большого числа элементов из одной папки в другую. Ну и при заведении придется добавить одну лишнюю строчку. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 22:52 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Valerii, Я не большой спец, но это точно можно применить в Access? А то операторы там некоторые незнакомы мне совсем.... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 08:50 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
Озверин, Спасибо огромное! Дерево сейчас строится быстро.... 2-3 тысячи узлов менее секунды - меня устраивает. про дополнительное поле с текстовой глубиной - отличная идея! позволяет не переделывать структуру базы, а это поле можно заполнить скриптом для всех уже имеющихся записей.... причем сделать это в любой момент, когда понадобится...> переделать поисковые запросы - вообще мгновенно. буду иметь ввиду, но пока переделывать у себя не буду. Выполнение статистического запроса за 5 сек мне кажется удовлетворительным... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 08:58 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
sdkuПанургSerg197311, в таком случае зачем мучить дерево?....Действительно,зачем??Может как-то по-другому (не дерево)Serg197311sdku, Я очень извиняюсь.... но я 4 сообщения назад подтвердил, что делаю именно так.....'в смысле без дереваSerg197311Дерево сейчас строится быстро.... 2-3 тысячи узлов менее секунды - меня устраивает. правда на прокрутку и поиск уходит не одна минута, но это ерунда (Вы уж определитесь-список с результатами поиска не наш метод) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 10:59 |
|
sql и Treeview
|
|||
---|---|---|---|
#18+
sdku, так что вы сказать то хотите??? Что у меня все не так,неправильно, не работает, работать не будет,неудобно или еще что? То что вы больше меня в программировании понимаете, вы уже продемонстрировали, полностью согласен. Но не могли бы вы по делу высказываться? или не высказываться совсем. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2018, 12:02 |
|
|
start [/forum/topic.php?all=1&fid=45&tid=1611363]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 283ms |
total: | 442ms |
0 / 0 |