мс доступ к отчетам и запросам - PullRequest
1 голос
/ 10 сентября 2009

Добрый день

Я создаю программу ведомости материалов.

Существуют две основные таблицы с именами Продукты и Субпродукты.

В таблице «Продукты» имеются следующие поля (Product_Name, Code). В таблице Sub_Products имеются следующие поля (Код, Имя_субъекта).

Таблицы связаны с кодом, т. Е. Один продукт состоит из множества субпродуктов, каждый субпродукт также является продуктом, поэтому в нем много субпродуктов.

Я создал запрос, который читает продукт и получает его sub_products. Мне нужен запрос, чтобы сравнить Sub_Name с Product_Name и затем проверить больше sub_products, продолжая, пока больше не будет найдено sub_products.

Я создал запрос, который получает product_name, а затем получает component_name, а затем другой запрос, чтобы изменить имя_компонента на product_name и получить его компонент

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

Запрос Quert для 4-го запроса ---------

ВЫБРАТЬ [Query3rd] .Component_Name, продукты101.Our_Product_Code, products101.Product_Name, Sub_Products101.Component_Name FROM (Query3rd INNER JOIN продукты101 ON [Query3rd] .Component_Name_NOID_NID ((([Query3rd] .Component_Name) = (products101.Product_Name)));

Ответы [ 3 ]

1 голос
/ 16 сентября 2009

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

Ваша проблема будет решена, если вы переключитесь на модель вложенного набора , но будут другие компромиссы.

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

0 голосов
/ 16 сентября 2009

Чтобы решить эту проблему в прошлом, я использовал бы большую временную таблицу с полями, такими как level1, level2, level3 и т. Д. Level1, конечно, мог бы разместить «корневые» объекты ... то есть объекты, нет родителя

Затем вы создаете функцию, которая рекурсивно вызывает себя и заполняет таблицу на всех уровнях. Это немного противно, но это работает.

Прошло много времени с тех пор, как я это сделал ... Я посмотрю, смогу ли я где-нибудь найти функцию, но сомневаюсь, что смогу достать ее.

Но держу пари, что у кого-то еще этот код более доступен. Кто-нибудь? Кто-нибудь?

Сет

PS ... Спецификации отображаются отлично в древовидном элементе управления.

0 голосов
/ 16 сентября 2009

Смотрите мой ответ на ваш предыдущий вопрос. Который был теперь удален.

Это стандартная проблема спецификаций. См. Модули: спецификация , хотя я уверен, что есть много других примеров.

...