"Операция должна использовать обновляемый запрос" ошибка в MS Access

Я получаю сообщение об ошибке: "Operation must use an updateable query", когда пытаюсь запустить свой SQL. Насколько я понимаю, это происходит, когда соединения используются в запросах на обновление/удаление в MS Access. Однако я немного запутался, потому что в моей базе данных есть другой почти идентичный запрос, который работает нормально.

Вот мой проблемный запрос:

UPDATE [GS] INNER JOIN [Views] ON 
    ([Views].Hostname = [GS].Hostname) 
    AND ([GS].APPID = [Views].APPID) 
    SET 
        [GS].APPID = [Views].APPID, 
        [GS].[Name] = [Views].[Name], 
        [GS].Hostname = [Views].Hostname, 
        [GS].[Date] = [Views].[Date], 
        [GS].[Unit] = [Views].[Unit], 
        [GS].[Owner] = [Views].[Owner];

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

UPDATE [Views] INNER JOIN [GS] ON 
[Views].APPID = [GS].APPID 
SET 
    [GS].APPID = [Views].APPID, 
    [GS].[Name] = [Views].[Name], 
    [GS].[Criticial?] = [Views].[Criticial?], 
    [GS].[Unit] = [Views].[Unit], 
    [GS].[Owner] = [Views].[Owner];

Что не так с моим первым запросом? Почему второй запрос работает, а первый нет?

В коде нет ошибки, но ошибка возникает из-за следующего:

 - Please check whether you have given Read-write permission to MS-Access database file.
 - The Database file where it is stored (say in Folder1) is read-only..? 

Предположим, что вы храните базу данных (файл MS-Access) в папке только для чтения, и при запуске приложения соединение не открывается принудительно. Следовательно, измените разрешение файла / разрешение содержащей его папки, например, в C:\Program files все файлы диска c были установлены read-only, поэтому изменение этого разрешения решает эту проблему.

Комментарии (2)
Решение

Верен ли этот ответ для всех или нет, я не знаю, но я решил эту проблему, немного изменив свой запрос.

Вместо того чтобы присоединять запрос select к таблице и обрабатывать ее, я изменил запрос select для создания временной таблицы. Затем я использовал эту временную таблицу в настоящей таблице, и все отлично сработало.

Комментарии (3)

Это попытка, но попробуйте заключить два операнда для AND в круглые скобки

On ((A = B) And (C = D))

Комментарии (3)