Интеграция подчиненных не работает без проблем в Ms Access 2010 - PullRequest
0 голосов
/ 27 ноября 2010

У меня есть форма в MS Access 2010 с двумя вложенными формами.Я определил отношения один-к-одному с таблицами за формами.Обе подформы должны использоваться для создания записи в соответствующих таблицах, а затем для обновления внешнего ключа в родительской форме.Но когда я сначала заполняю подформу, в соответствующей таблице создается запись, но внешний ключ не обновляется.Разве это не должно произойти автоматически?Или я должен добавить код для обновления поля родительской формы?

Также, когда я сначала заполняю основную форму, а затем перехожу на любую из подформ, я получаю следующее сообщение об ошибке:
"Вы должнывведите значение в поле «Activations.dbBoxID» (здесь активация - это основная форма, а dbBoxID - поле внешнего ключа.)

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

Я новичок в MS Access.Буду признателен за любую помощь!

Ответы [ 2 ]

2 голосов
/ 28 ноября 2010

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

Другими словами, ваша основная форма должна основываться на основной или родительской таблице.НЕ включайте в дочерний стол.Я повторю это еще раз: не включайте в дочернюю таблицу.

Таким образом, вы можете основать основную или основную форму на запросе, но когда вы это сделаете, не объединяйте дочернюю таблицу вэтот запрос.На самом деле, в большинстве случаев на самом деле нет никакой пользы от использования формы на основе запроса.Просто создайте форму и положите ее на стол.

ЖЕ СОВЕТЫ применяются для дочерней формы.Вы основываете дочернюю форму на дочернем столе.Вы НЕ используете запрос с объединением.

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

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

0 голосов
/ 28 ноября 2010

Форма с подчиненными формами работает лучше, если данные в родительской форме вводятся первыми.Затем подчиненные формы могут быть объединены в элементе parent_key с foreign_key в каждой таблице без какого-либо кода.

Если вы хотите, чтобы пользователи сначала вводили записи в подчиненные формы, не обновляйте их, пока родительская форма не будет заполнена / сохранена,вам нужно будет сделать немного кодирования.Не уверен, зачем тебе это нужно / хочешь?

Форма клиента с счетами и подчиненными формами платежей, например, вы должны ввести достаточно данных клиента для создания записи.Затем можно вводить счета и / или платежи.

...