Я получаю сообщение об ошибке: "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, поэтому изменение этого разрешения решает эту проблему.
Верен ли этот ответ для всех или нет, я не знаю, но я решил эту проблему, немного изменив свой запрос.
Вместо того чтобы присоединять запрос select к таблице и обрабатывать ее, я изменил запрос select для создания временной таблицы. Затем я использовал эту временную таблицу в настоящей таблице, и все отлично сработало.