1

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

Поэтому, когда я открываю проект 1 в форме, я хочу видеть номера проектов, связанных с проектом 1, например, номера проектов 2, 5 и 6. И когда я открою проект 2, я бы хотел увидеть номера проектов 1, 5 и 6. В форму я хотел бы добавить новые «отношения».

К сожалению, я не знаю, как это сделать. Нужно ли создавать новую таблицу (или только одно поле), которая присваивает проектам, связанным друг с другом, «идентификатор отношения»? Или это может быть решено самосоединением?

2 ответа2

1

Решение, предоставленное Andy G, идеально подходит, если у вас есть отношения «ведущий / ведомый» (то есть: один основной проект и несколько связанных подпроектов).

Но если у вас есть равные отношения, где любая запись может относиться к любому количеству других записей, тогда вы можете создать то, что я называю "Таблицей ссылок", где у вас есть 2 поля:ID записи A и ID записи B

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

Примечание: Вы также можете создать макрос, чтобы убедиться, что для каждой записи AB в таблице ссылок у вас также есть запись BA, или вы просто делаете это вручную.

0

Немного поздно, но, да, самостоятельное присоединение.

  • Добавьте новое поле в таблицу, например MainProject . Убедитесь, что он имеет тот же тип данных, что и поле ProjectNumber ;
  • Войдите в окно отношений и добавьте таблицу во второй раз. Перетащите из MainProject первой копии в ProjectNumber второй копии;
  • Дважды щелкните линию соединения и выберите « Принудить ссылочную целостность» . Это гарантирует, что вы не сможете назначить MainProject идентификатор, который еще не существует в ProjectNumber .

Когда вы создаете форму, которая используется для создания новых записей для этой таблицы, добавьте ComboBox и установите для его RowSource SQL-оператор, в котором перечислены ProjectNumbers (и, возможно, другие поля) из таблицы. Установите его ControlSource в MainProject .

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

Однако, если есть другие подробности, относящиеся к этому основному проекту, которых еще нет в таблице, тогда да, вы должны создать новую таблицу, чтобы сохранить эти подробности - в частности, то есть информацию, которая имеет отношение ТОЛЬКО к основному проекты.

Если вам нужен только номер ProjectNumber (основного проекта), тогда достаточно самостоятельного объединения, как описано выше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .