Борьба с дизайном «многие ко многим (один стол)» - PullRequest
2 голосов
/ 28 сентября 2019

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

Как видно из названия, это M2M, включающий только таблицу:

  • tbl_elements (ID, элемент)
  • tblJ_elements (IDJ, J_elements1, J_elements2)
  • frm_elements (на основе tbl_elements - разделить форму слева, подчиненная форма указана ниже справа)
  • frm_elements_subform (на основе tblJ_elements)

-

Это то, что я хотел бы, например, ()используя frm_elements ):

  • перейдите к вулкану (в списке данных слева)
  • введите лаву в поле ввода справа (это elements2; elements1скрыт и имеет значение по умолчанию, установленное на любую текущую запись, выбранную в таблице)
  • перейти к лаве - см. вулкан в списке

-

Конечно, этоне работает, как при переходе на лаву, нет записей, потому что естьнет записи таблицы соединений, где elements1 = lava.Мне нужно иметь список splitform, основанный на поле elements2, однако это явно та же проблема.

Я не могу обернуть это вокруг, так как хочу, чтобы

  • имелсписок таблицы splitform, перечисляя каждую запись от tbl_elements
  • , выберите 'вулкан' и посмотрите подформу справа
  • , введите соответствующее слово, 'lava'
  • , затем сможетеперейдите к лаве в списке данных и увидите, что там также указан «вулкан»

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

С уважением

1 Ответ

0 голосов
/ 28 сентября 2019

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

SELECT e.ID, e.element
FROM tbl_elements e INNER JOIN tblJ_elements j ON e.ID = j.J_elements1
WHERE j.J_elements2 = Forms!frm_elements!element_ID

UNION ALL

SELECT e.ID, e.element
FROM tbl_elements e INNER JOIN tblJ_elements j ON e.ID = j.J_elements2
WHERE j.J_elements1 = Forms!frm_elements!element_ID

ORDER BY element

frm_elements!element_ID - это элемент, который вы выбрали с левой стороны.

Запросы UNION всегда доступны только для чтения, поэтому ваша подчиненная форма будет доступна только для чтения.Вам нужно обрабатывать добавления и удаления на правой стороне с VBA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...