Устранение ошибок, которые могут возникнуть при обновлении данных в запросах и формах Access

Исходный номер базы знаний: 328828

Примечание.

Требуются базовые навыки работы с кодом, макросами и взаимодействия. Эта статья относится к базе данных Microsoft Access (.mdb и ACCDB) и к проекту Microsoft Access (ADP).

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

При попытке обновить данные в запросе или форме может появиться одно из следующих сообщений об ошибке:

Операция должна использовать запрос с возможностью обновления.

-или-

Этот набор записей не обновляется.

Сведения об устранении неполадок, которые могут возникнуть при обновлении данных в запросе

  • Если запрос основан на трех или более таблицах и существует связь "многие ко многим", вы не можете обновить данные непосредственно в запросе. Вы можете обновить данные в форме или на странице доступа к данным. Это можно сделать на основе запроса, RecordsetType если для свойства формы задано значение Dynaset(Несогласованный Обновления).

  • Если запрос является перекрестным запросом, данные в запросе обновить нельзя.

  • Если запрос является сквозным запросом Microsoft SQL, вы не сможете обновить данные в запросе.

  • Когда запрос вычисляет сумму, среднее значение, количество или другой тип итогового значения в поле, данные в запросе обновлять нельзя. Кроме того, нельзя обновить запрос, ссылающийся на поле в строке Update To из перекрестной таблицы, запроса, запроса выбора или вложенного запроса, содержащего итоговые или агрегатные функции. Чтобы обойти эту проблему, используйте функцию Domain Aggregate в строке Обновить до запроса на обновление. Вы можете ссылаться на поля из перекрестного запроса, запроса выбора или вложенного запроса, содержащего итоговые или агрегатные функции.

  • Если запрос является запросом на объединение, вы не сможете обновить данные в запросе.

  • Если для свойства Уникальные значения запроса задано значение Да, обновление данных в запросе невозможно. Чтобы обойти эту проблему, задайте для свойства Unique Values запроса значение Нет.

  • Если запрос включает связанную таблицу ODBC без уникального индекса или таблицу Paradox без первичного ключа, обновление данных в запросе невозможно. Чтобы обойти эту проблему, добавьте первичный ключ или уникальный индекс в связанную таблицу.

  • Если у вас нет разрешений на обновление данных для запроса или базовой таблицы, вы не сможете обновить данные. Чтобы устранить эту проблему, назначьте разрешения на обновление данных.

  • Если запрос содержит несколько таблиц или один запрос, а таблицы или запросы не соединены строкой соединения в режиме конструктора , данные в запросе обновить нельзя. Чтобы устранить эту проблему, необходимо правильно объединить таблицы, чтобы их можно было обновить.

  • Если поле, которое требуется обновить, является вычисляемым, данные в запросе обновить нельзя.

  • Если поле, которое вы пытаетесь обновить, доступно только для чтения, база данных открыта как доступная только для чтения, или база данных находится на диске только для чтения, вы не сможете обновить данные в запросе. Чтобы избежать этой проблемы, не открывайте базу данных только для чтения. Если база данных находится на диске, доступном только для чтения, удалите атрибут только для чтения с диска или переместите базу данных на диск, который не доступен только для чтения.

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

  • Если запрос основан на таблицах с отношением "один ко многим", то типы полей, которые вы не сможете изменить, будут следующими:

    • Поле соединения со стороны "one".
    • Поле бокового соединения "многие" не отображается в таблице.
    • Присоединение поля со стороны "многие" после обновления данных на стороне "один".
    • Существует пустое поле из таблицы на стороне "один" связи "один ко многим" с внешним соединением.
    • Весь уникальный ключ таблицы ODBC не является выходными данными.

    Вы можете устранить любую из этих проблем, выполнив правильные действия из следующего списка:

    • Включите каскадные обновления между двумя таблицами.
    • Добавьте в запрос поле соединения со стороны "многие", чтобы можно было добавлять новые записи.
    • Сохраните запись. Вы можете внести изменения в поле бокового соединения "многие".
    • Введите значения в полях из таблицы на стороне "многие". Это можно сделать только в том случае, если присоединенное поле со стороны "один" содержит значение для этой записи.
    • Выберите все поля первичного ключа таблиц ODBC, чтобы разрешить вставку в них.

Сведения об устранении неполадок, которые могут возникнуть при обновлении данных в форме

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

  • Невозможно обновить данные в форме, если форма основана на наборе записей объектов данных ActiveX (ADO). Формы доступа позволяют изменять данные из набора записей ADO, если набор записей ADO создается с помощью сочетания поставщиков MSDataShape и SQL Server OLEDB.