powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Создание отчета
6 сообщений из 6, страница 1 из 1
Создание отчета
    #32540735
m1rag3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут такая задача...
Имеется таблица Спецификация, в ней есть поле Код_позиции и Родитель.
Суть такая. Изначально имеем определенное значение Код_позиции и выбираем все записи из данной таблицы с этим кодом. Затем необходимо в этой же таблице найти все записи, где поле Родитель содержит значение данного Кода_позиции. Для полученных записей cделать то же самое и так пока поиск не даст нулевого результата. Уровень вложенности произвольный. В отчете все это должно представляться в виде древовидной структуры.
Товарисчи, памагите кто могет, pls!
...
Рейтинг: 0 / 0
Создание отчета
    #32540738
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы не братья?
дерево в отчет...

Для начала надо структуру данных менять (ИМХО)
...
Рейтинг: 0 / 0
Создание отчета
    #32540743
m1rag3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всегда поражался проницательности русских людей... 8-) Мы не братья, просто работаем вместе, я просто решил поконкретней вопрос задать... :-)))))
А что ты имеешь в виду под изменением структуры данных? Была конечно мысль создать временную таблицу и уже по ней строить отчет, но хотелось бы узнать мнение компетентных людей, может есть простой способ.
...
Рейтинг: 0 / 0
Создание отчета
    #32540765
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется ввиду (это чисто пример, есть и другие способы):

1. Добавляем поле в котором храним полную иерархию
str_ie

Для корня оно = ""
Для потомнок первого уровня "1" ("2", "3")
Для потомков второго уровня (например для "2") = "21" ("22", "23")

Примерно:
id parent str_ie
1 Null ""
2 1 "1"
3 1 "2"
4 2 "11"
5 1 "3"
6 2 "12"
7 6 "121"

Идея ясна?

Запрос вывода поддерева для некоторой вершины с id = (например 2)

Select t1.*
From tbl t1 Inner Join tbl t2
On (t2.id = 2) And (t1.str_ie Like t2.ie & "*")

Порядок вложенности можно определять по длине поля str_ie :)
...
Рейтинг: 0 / 0
Создание отчета
    #32540780
m1rag3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это конечно хорошо, пока ID один разряд занимает, а когда больше и числа получатся разной длины? Или резервировать в str_ie разряды, заполняя незначащие нулями? Да, кстати, а то что выборка строится по текстовому полю не скажется на скорости при большом размере БД?
...
Рейтинг: 0 / 0
Создание отчета
    #32540793
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зарделяй точками!

Т.е.
Примерно:
id parent str_ie
1 Null "."
2 1 ".1."
3 1 ".2."
4 2 ".1.1."
5 1 ".3."
6 2 ".1.2."
7 6 ".1.2.1."

?

авторДа, кстати, а то что выборка строится по текстовому полю не скажется на скорости при большом размере БД?
ИМХО:
1. используется первый значащий символ (возможно использование индексов)
2. быстрее будет, чем по рекордсету в цикле шарахаться :) - ну в крайнм случай - это всего один проход, а не по количеству вложенностей (которые не известны :( )
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Создание отчета
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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