Почему мой запрос Access 2007 вдруг перестал обновляться?

У меня есть запрос в Access 2007. Он работал нормально в течение нескольких месяцев, но я внезапно получаю сообщение об ошибке «набор записей не подлежит обновлению». Думая, что ошибка, должно быть, была вызвана недавним изменением, я вернулся к заархивированным версиям (которые определенно работали) - все они выбрасывают одну и ту же ошибку. Сама таблица является обновляемой; действительно, другой запрос к той же таблице работает просто отлично. Что могло внезапно случиться, чтобы сломать мой запрос? Код следует:

    SELECT Prospects.Company, Contactnames.*, IIf([Prospects]![Key Contact]=[ContactID],True,False) AS [Key Contact], Prospects.Status
FROM Contactnames INNER JOIN Prospects ON Contactnames.CompanyID=Prospects.ID
WHERE (((Prospects.Status) Not Like "Duplicate"));

Любая помощь будет принята с благодарностью. Спасибо, Оли.


person Sinister Beard    schedule 02.07.2012    source источник
comment
Любой из этих allenbrowne.com/ser-61.html?   -  person Fionnuala    schedule 02.07.2012
comment
Проверьте и посмотрите, не заблокирован ли доступ к базе данных другим пользователем/процессом.   -  person Bridge    schedule 02.07.2012
comment
Как я увижу, что база данных заблокирована?   -  person Sinister Beard    schedule 02.07.2012


Ответы (2)


Если вы используете связанные таблицы ODBC, вам необходимо включить в запрос поля первичного ключа из всех таблиц, если вы хотите, чтобы запрос можно было обновлять. Вот некоторые потенциальные «подводные камни»:

  • Access может неправильно распознавать поля первичного ключа в связанной таблице ODBC; часто (всегда?) Access выбирает первый уникальный индекс, который он находит для таблицы (на основе алфавитного порядка имени индекса) и предполагает, что индекс является первичным ключом
  • добавление репликации к таблицам в MS SQL Server (и, возможно, в других СУБД) добавит столбец GUID с уникальным индексом; наряду с вышеуказанным пунктом, это может привести к тому, что Access будет думать, что ваши связанные таблицы имеют другие первичные ключи, чем они есть на самом деле.
  • Изменения, внесенные в структуру связанных таблиц ODBC, не отражаются в Access автоматически; связанные таблицы ODBC можно обновить с помощью Инструменты --> Утилиты базы данных --> Диспетчер связанных таблиц... (среди прочего)
person mwolfe02    schedule 02.07.2012
comment
Я использую связанные таблицы ODBC... буду исследовать, и похоже, что я вернусь сюда, чтобы добавить галочку... - person Sinister Beard; 02.07.2012
comment
@OliJeffery Если вы изменили дизайн исходных таблиц после создания ссылок в Access, информация, хранящаяся в Access об этих таблицах, может быть устаревшей. Повторно создайте ссылки, чтобы Access использовал обновленную информацию об исходных таблицах. - person HansUp; 02.07.2012
comment
Спасибо Гансуп (и всем остальным) - в конце концов очень просто, одна из таблиц каким-то образом потеряла свой первичный ключ! Теперь снова работает. - person Sinister Beard; 03.07.2012

Вероятная причина в том, что изменился не запрос, а база данных.

Убедитесь, что файл базы данных не защищен от записи. Это вызовет это сообщение об ошибке.

person Guffa    schedule 02.07.2012
comment
Привет, как говорит Рему, сама БД не защищена от записи, я могу обновить ее из другого запроса. - person Sinister Beard; 02.07.2012