MS Access 2007 Мастер дизайн детской формы

Мне нужен совет о том, как структурировать некоторые формы MS Access 2007 для следующего сценария.

Моя структура таблицы выглядит следующим образом:

Товар
++++++
ID (pk)
Наименование товара
...

Тег
++++
ID (pk)
Название тэга

ProductTag
+++++++++++
ProductID (fk)
TagID (фк)

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

Все идет нормально. Нет проблем.

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

Я думаю, что у меня есть три формы в игре, но здесь мне нужен совет:
-Основная форма
- Форма продукта (подчиняется основному) мои критерии поиска продукта, вероятно, находятся в этом заголовке формы.
-Tag Форма (также подчиняется основной)

Но при таком подходе у меня возникают проблемы с привязкой двух субформ друг к другу. На самом деле, мне очень трудно понять, как отобразить список всех тегов с флажком, который при включении и выключении создает / удаляет запись в таблице ProductTag, и я действительно хочу, чтобы Access выполнял столько CRUD, сколько возможный. Я бы предпочел избегать написания стяжек SQL INSERTS/DELETES для событий. Я спрашиваю слишком много доступа?

Если вы можете помочь, это будет высоко ценится. Если в своем ответе вы сможете обсудить, какие поля RecordSource и Master/Child Link и / или события, на которые я должен обратить внимание, это было бы очень полезно.

1 ответ

Решение

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

Мое решение будет следующим. Я работал с формой TagList как дочерний элемент формы Product, но есть и другие способы.

сначала создайте запрос 'qryProductTags' в таблице ProductTag, который выбирает все записи, которые соответствуют продукту, выбранному в данный момент в форме Product.

Затем создайте второй запрос - таблицу тегов левого внешнего соединения (тип соединения 2 в Access) qryProductTags. Включите в вывод этого запроса TagID, TagName и fkProductID.

Этот запрос должен теперь выбрать все записи на вкладке "Теги", и если в таблице ProductTags существует тег для текущего продукта, он будет показывать ProductID, в противном случае это поле будет пустым.

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

Вы можете использовать условное форматирование в форме TagList для отображения выбранных тегов или использовать отдельную форму для отображения тегов для текущего продукта.

Надеюсь, в этом есть смысл. Вы можете найти "быстрый и грязный" рабочий пример, если это поможет, поскольку я не вижу способа загрузить файл здесь: https://drive.google.com/folderview?id=0B0J_JolN6f8GOXpKVVZJTHVJTWM&usp=sharing

Другие вопросы по тегам