powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Иерархический способ хранения данных в Акесе
5 сообщений из 5, страница 1 из 1
Иерархический способ хранения данных в Акесе
    #32111470
Хелп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа!
Стоит задача в одном месте (таблице) хранить некое дерево, где ветки дерева могут плодиться до бесконечности (конечно какое-то ограничение будет, например до 6 уровней)
Т.е.
Группа1
Группа2
...Группа2.1
...Группа2.2
......Группа3.1
Группа3

Сами группы и подгруппы вносит пользователь, далее он будет присваивать этим группам некий перечень значений (таблица 1 ко многим), может "двигать" эти группы с уровня на уровень и "делать" отступы.

Меня интресует сам способ хранения иерархических записей, способ выборки select'ом какого-то определенного уровня. Насколько это будет сложно?
К тому же хотя значения и будут храниться в одной таблице, но для группы1 (например) это значение ID продукта, а для Группы2 это значение ID НаименованиеСчета. И главное надо будет реализовать (очень желательно) средcтвами Акеса контроль целостности (по мне - это не реально, вот если бы в связях могли бы участовать запросы с выборкой, тогда да). Но вот как?

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

На сем откланиваюсь...
...
Рейтинг: 0 / 0
Иерархический способ хранения данных в Акесе
    #32111481
Julius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, не совсем понятно объяснили. Тем не менее, иерархическая группировка конечно возможна через простое самообъединение таблиц (поле "Родитель", ссылающееся на первичный ключ.
Заполнять такую иерархию можно средствами Access XP вплоть до 7-го уровня включительно, для чего достаточно воспользоваться вложением друг в руга нескольких табличных форм, свзанных по полю "Родитель". В этом случае такая форма будет открываться с возможностью редактирования записей в подтаблицах.
Если надо "перетаскивать" уровни иерархии, то придется воспользоваться элементом treeView, который позволяет представлять иерархические данные и поддреживает Drag And Drop.
Выбрать определенный уровень всегда можно запросом:

SELECT * FROM Таблица WHERE Родитель = <Код родительской записи>

Если в такой таблице будут храниться ссылки на разные другие таблицы - это не есть хорошо, в том плане что дядя Кодд это не одобряет :), причем правильно делает. Но если уж вам это так надо, то надо в вашу тиблчку добавить поле "Тип", определяющее куда ведет ссылка. Правда, организовывать такую струкетуру лучше не надо - SQL не имеет стандартных приличных средств работы с таким образом организованными данными.
Я бы посоветовал все же попробовать сделать табличку "Документы", на которую будут ссылаться своим первичным ключем все типы документов, а уже на нее то и устанавливать всего одну ссылку. Тогда выборку можно будет делать с использованием OUTHER JOIN и дядюшка Кодд не будет возражать :).
...
Рейтинг: 0 / 0
Иерархический способ хранения данных в Акесе
    #32111638
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Julius объяснил все верно и Кодд и Бойс были бы не довольны, поэтому я просто буду делать как нужно.

ID Name PаrentID

ID связано с ParentID 1 ко многим, и TreeView по этой структуре строится элементарно, а данные по разным сущностям я буду хранить в разных таблицах, правда таблиц получиться штук 10.

Сейчас беда у меня другая: как хранить и обрабатывать выражения, т.е. указываю что ЗначениеПоля1=ЗначениеПоля2+ЗначенияПоля14*0,5 и обрабатывать это используя SQL, а не VBA

Т.е. где-то внутри проги пользователь выбирает: Группировка товара №67/а,
(а этой группировке сопоставлено что Пол1=Поле2+Поле7*0,5
Поле6=Поле4*Поле3-1 и т.п.) И получает расчитанный по этим формулам значения Поля1 и Поля6.
Надеюсь на этот раз обячнил лучше.
...
Рейтинг: 0 / 0
Иерархический способ хранения данных в Акесе
    #32111676
Julius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше то лучше, да только не понятно где эти самые поля находятся: в одной и той же записи одной и той же таблицы или как?
Где счиать то надо? В запросе? В форме?
...
Рейтинг: 0 / 0
Иерархический способ хранения данных в Акесе
    #32111849
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Лучше то лучше, да только не понятно где эти самые поля находятся: в >>одной и той же записи одной и той же таблицы или как?
>>Где счиать то надо? В запросе? В форме?

Поля будут находиться в неком справочнике (Табл1)
Считать надо в запросах. Сами запросы содержат имена полей указанне в Табл1
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Иерархический способ хранения данных в Акесе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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