Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Иерархический способ хранения данных в Акесе
|
|||
|---|---|---|---|
|
#18+
Господа! Стоит задача в одном месте (таблице) хранить некое дерево, где ветки дерева могут плодиться до бесконечности (конечно какое-то ограничение будет, например до 6 уровней) Т.е. Группа1 Группа2 ...Группа2.1 ...Группа2.2 ......Группа3.1 Группа3 Сами группы и подгруппы вносит пользователь, далее он будет присваивать этим группам некий перечень значений (таблица 1 ко многим), может "двигать" эти группы с уровня на уровень и "делать" отступы. Меня интресует сам способ хранения иерархических записей, способ выборки select'ом какого-то определенного уровня. Насколько это будет сложно? К тому же хотя значения и будут храниться в одной таблице, но для группы1 (например) это значение ID продукта, а для Группы2 это значение ID НаименованиеСчета. И главное надо будет реализовать (очень желательно) средcтвами Акеса контроль целостности (по мне - это не реально, вот если бы в связях могли бы участовать запросы с выборкой, тогда да). Но вот как? А все начиналось так хорошо. Нормализованные таблицы, связи, но потребовалось создание пользователем своих группировок. Скорее всего объяснил я сумбурно и не понятно. Но вдруг кто-то что-то поймет и натолкнет меня на какую-то нужную мыслю. На сем откланиваюсь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2003, 14:33 |
|
||
|
Иерархический способ хранения данных в Акесе
|
|||
|---|---|---|---|
|
#18+
Действительно, не совсем понятно объяснили. Тем не менее, иерархическая группировка конечно возможна через простое самообъединение таблиц (поле "Родитель", ссылающееся на первичный ключ. Заполнять такую иерархию можно средствами Access XP вплоть до 7-го уровня включительно, для чего достаточно воспользоваться вложением друг в руга нескольких табличных форм, свзанных по полю "Родитель". В этом случае такая форма будет открываться с возможностью редактирования записей в подтаблицах. Если надо "перетаскивать" уровни иерархии, то придется воспользоваться элементом treeView, который позволяет представлять иерархические данные и поддреживает Drag And Drop. Выбрать определенный уровень всегда можно запросом: SELECT * FROM Таблица WHERE Родитель = <Код родительской записи> Если в такой таблице будут храниться ссылки на разные другие таблицы - это не есть хорошо, в том плане что дядя Кодд это не одобряет :), причем правильно делает. Но если уж вам это так надо, то надо в вашу тиблчку добавить поле "Тип", определяющее куда ведет ссылка. Правда, организовывать такую струкетуру лучше не надо - SQL не имеет стандартных приличных средств работы с таким образом организованными данными. Я бы посоветовал все же попробовать сделать табличку "Документы", на которую будут ссылаться своим первичным ключем все типы документов, а уже на нее то и устанавливать всего одну ссылку. Тогда выборку можно будет делать с использованием OUTHER JOIN и дядюшка Кодд не будет возражать :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2003, 14:45 |
|
||
|
Иерархический способ хранения данных в Акесе
|
|||
|---|---|---|---|
|
#18+
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. Надеюсь на этот раз обячнил лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2003, 16:58 |
|
||
|
Иерархический способ хранения данных в Акесе
|
|||
|---|---|---|---|
|
#18+
Лучше то лучше, да только не понятно где эти самые поля находятся: в одной и той же записи одной и той же таблицы или как? Где счиать то надо? В запросе? В форме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2003, 17:34 |
|
||
|
Иерархический способ хранения данных в Акесе
|
|||
|---|---|---|---|
|
#18+
>>Лучше то лучше, да только не понятно где эти самые поля находятся: в >>одной и той же записи одной и той же таблицы или как? >>Где счиать то надо? В запросе? В форме? Поля будут находиться в неком справочнике (Табл1) Считать надо в запросах. Сами запросы содержат имена полей указанне в Табл1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2003, 08:58 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32111638&tid=1682227]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 381ms |

| 0 / 0 |
