2009-08-31 1 views
3

У меня есть две таблицы (persons и projects), которые находятся в многие-ко-многим таблице, таким образом, связаны друг с другом с помощью третьей таблицы persons_projectsзаполнить многие-ко-многим таблицу с доступом

В доступе мс I Теперь создала форму, отображающую данные из таблицы projects.

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

Как я могу это сделать? Я могу показать всех участников, но я не могу их добавить. похоже, у меня снова возникает проблема с «вставкой в ​​просмотр», так как мне нужны persons и persons_projects, чтобы показать правильные наборы данных. но поскольку я только изменяю/добавляю строки в одной таблице (persons_projects), я не понимаю, почему доступ снова суетливый.

+0

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

+2

это скорее », как заставить этого зверя делать то, что я хочу». я вижу это как _visual_ программирование – knittl

+3

Ух, в форме формы доступа есть программирование, не так ли? То есть, вам нужно писать код в других приложениях, это точка/щелчок/перетаскивание/удаление в Access. По вашим стандартам, Remou, подавляющее большинство операций доступа не программируются. –

ответ

1

Вам не нужны люди, только лица_проекты. Я предполагаю, что people_projects состоит из:

person_id -> FK ) Combined as PK, perhaps, if not, an autonumber PK 
project_id -> FK ) 

и (рекомендуется) штамп datetime и поле пользователя.

Подчиненная составляет набор, с Link Child и Master поле PROJECT_ID, который будет автоматически завершен к Access, и выпадающий похожие на:

Control Source: person_id 
Row Source: SELECT person_id, surname & " " & forename, some_field FROM persons 
Bound Column: 1 
Column Count: 3 
Column Widths: 0cm;2cm;2cm 

Edit повторно Комментарии

Это возможно, хотя и немного сложнее, включить обе таблицы и обновить набор записей, запрос (представление) должен включать в себя как project_id, так и person_id из таблицы соединений.

+0

Я хочу, чтобы «лица» в подформе отображали дополнительные данные (например, адреса, номера телефонов и т. Д.), Думаю, мне понадобится подзадача? – knittl

+0

Как я могу получить доступ к 'project_id' из исходного запроса строки? т. е. показывать только тех, кто еще может быть добавлен - ведь я хочу уникальности.acess просто не добавляет эти значения без сообщения об ошибке (не знаю, что происходит для нетехников) – knittl

+0

Добавление подзадачи меняет вид по умолчанию на единую форму, но мне нужны непрерывные формы для правильной работы. aaargh, доступ сводит меня с ума ... – knittl

0

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

Оставьте свою форму на Лицевом столе. Подформация должна основываться на таблице person_projects и быть связана с соответствующими идентификаторами. Вы можете использовать комбинированное поле projectid в подформе и отобразить другое поле, чтобы пользователь мог идентифицировать проект (имя?). Возможно, вам захочется показать все данные проекта для каждого проекта в этой форме, но вы можете обнаружить, что это очень запутывает пользователя. Выбор другой формы, которую вы можете «всплывать», чтобы предоставить больше информации о проекте, может быть лучшим выбором.

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

+0

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