Access 2003 - создание и удаление связей «многие ко многим» - PullRequest
0 голосов
/ 23 апреля 2011

Мне нужно разработать интерфейс для базы данных MSSQL, чтобы просто изменить несколько таблиц. Я решил использовать Access 2003 просто из-за временных ограничений. Я использовал связанные таблицы через ODBC, чтобы получить их в Access, я проектирую формы, но у меня возникают проблемы при создании интерфейса, позволяющего пользователям создавать и удалять новые ассоциации между объектами.

Структура моей базы данных:

product
# productcode
- name

product_part
* productcode
* partnumber
- position

part
# partnumber
- comment

Между продуктом и деталью существует отношение «многие ко многим» (товар может состоять из нескольких частей, а деталь может принадлежать многим продуктам), за исключением того, что я не могу найти простой способ позволить пользователю просто связать новый продукт. часть к продукту, только просмотр существующих.

Я определил отношения в Access, за исключением того, что параметры для кардинальности и ссылочной целостности закрашены серым, я предполагаю, что это потому, что они являются связанными таблицами? Не уверен, что это повлияет на что-либо.

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

В основном мне нужно создать механизм пользовательского интерфейса, который будет связывать выбранную деталь из списка с показанным продуктом или любым другим способом гибко создавать новые и удалять существующие связи. Я мог бы подумать, что в Access у кого-нибудь из волшебников будет что-то для этого, но если это произойдет, я не смогу это найти.

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 06 мая 2011

Я обнаружил, что то, что я хотел сделать, нелегко сделать с помощью связанных таблиц, я смог легко сделать то, что хотел, если использовал собственные таблицы доступа (поскольку это позволило мне правильно определить отношения), ноне мог сделать это со связанными таблицами.

0 голосов
/ 23 апреля 2011

Судя по тому, что было отмечено до сих пор, тогда будет очень просто иметь основную форму, основанную на вашей самой верхней таблице (продукте). Форма продолжения должна основываться ТОЛЬКО на таблице деталей продукта.

Если подумать, третья таблица - это всего лишь справочная таблица для вашего удобства, чтобы вам не приходилось вводить вручную номер детали.

Итак, основывайте дочернюю подформу как непрерывную форму и сделайте этот столбец для номера детали комбинированным полем, которое ищет номера деталей из третьей таблицы (детали). Так что этот комбо босс может искать и отображать по описанию, но фактически автоматически сохранит номер детали в этом столбце для вас.

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

Результатом будет форма, которая позволяет добавлять новые сборки деталей или редактировать существующие. Хотя access будет поддерживать столбец кода продукта для вас, если вы удалите основную запись, вам потребуется настроить ссылочную целостность и каскадное удаление в части базы данных. Итак, как вы правильно заметили, все функции целостности будут настроены на серверной части базы данных, а не на входной части доступа.

...