#ms-access #asp-classic
#ms-access #asp-классический
Вопрос:
Я только что перешел на веб-сайт access и пытаюсь понять, почему, когда я пытаюсь обновить запись в одной таблице, она выдает мне это сообщение.
«Ошибка Microsoft JET Database Engine ‘80040e21’
You cannot add or change a record because a related record is required in table 'Members'. "
Как мне узнать, что такое связанная запись.
Спасибо за любую помощь
Комментарии:
1. Похоже, что между редактируемой таблицей и таблицей элементов установлена связь. Не просматривая таблицы, возможно, есть поле, ищущее MemberID. Вам нужно ввести идентификатор участника (или что бы это ни было), который существует внутри членов.
2. Хорошая идея использовать оператор OR, но если вы введете слишком много, созданный им SQL не будет запущен. См. Рис. введите описание изображения здесь
Ответ №1:
Проблема не в поиске связанной записи, проблема в том, что в элементах нет связанной записи, соответствующей записи, которую вы пытаетесь обновить в другой таблице.
Вы можете начать с просмотра связей, которые настроены для вашей базы данных. Перейдите в меню Сервис и выберите Отношения. Ищите любые связи между таблицей Members и таблицей, которую вы пытаетесь обновить. Посмотрите, какие поля используются в отношениях. Это сообщит вам, какое поле вызывает проблему в таблице, которую вы пытаетесь обновить. Для любого значения, которое вы пытаетесь ввести в это поле, то же самое значение должно сначала существовать в соответствующем поле в элементах.
Комментарии:
1. Подсказка: не все отношения доступа обеспечивают ссылочную целостность.
Ответ №2:
Спасибо за вашу помощь. Я смог заставить ее работать, используя некоторые из приведенных выше советов и методом проб и ошибок.
Проблема заключалась в том, что было два связанных поля, и именно поэтому, когда я попытался сделать то, что, как я ожидал, потребуется, это не сработало должным образом.
Ответ №3:
В моем случае у меня был выпадающий список, который менял имя записи из другой таблицы, для которой требовался идентификатор еще одной таблицы.
Итак, у меня была таблица C, которая имела внешний ключ к таблице B, а таблица B имела внешний ключ к таблице A. Мой combobox был настроен на управление полем name таблицы B, поэтому я изменил его, чтобы вместо этого управлять внешним ключом в таблице C (который указывает на таблицу B).
Чтобы решить мою проблему, я выбрал поле со списком, перешел к
Property Sheet (F4) ->Data->Control Source
и установите его в поле внешнего ключа в таблице C (которое указывает на запись в таблице B)
Ответ №4:
Я столкнулся с другой причиной этой проблемы.
Вызовите две таблицы A
и B
. Между ними определены отношения со ссылочной целостностью. Когда я попытался добавить запись, в B
которой была соответствующая запись A
, я получал сообщение об ошибке «Вы не можете добавить или изменить запись, потому что связанная запись требуется в таблице ‘A'». Это не имело смысла, потому что необходимая связанная запись была там A
.
Затем я понял, что поле в B
Display Control
* было установлено в поле списка, источником которого был A
, а связанный столбец был неправильным номером столбца, который был частью первичного ключа. Поэтому, когда я попытался добавить новую запись B
, она искала не в том месте значение первичного ключа, которое я добавлял, и, конечно, не нашла там необходимого значения. Когда я установил для связанного столбца правильный номер столбца, я смог добавить новую запись.
‘* Display Control
находится в свойствах поля таблицы на вкладке Lookup
.