MS Accessでエラーが発生しました。

SQLを実行しようとすると、「"Operation must use an updateable query"」というエラーメッセージが表示されます。私の理解では、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];

私の最初のクエリのどこが悪いのでしょうか?1つ目のクエリが動作しないのに、2つ目のクエリが動作するのはなぜですか?

コードにエラーはありませんが、次のような原因でエラーが発生します。

 - 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:プログラムファイル」では、ほとんどのCドライブファイルが読み取り専用に設定されていますので、このパーミッションを変更すると、この問題は解決します。

解説 (2)
ソリューション

この答えが普遍的に正しいかどうかはわかりませんが、私はこの質問を少し変えて解決しました。

セレクトクエリをテーブルに結合して処理するのではなく、セレクトクエリを変更して一時テーブルを作成しました。そして、その一時テーブルを実際のテーブルに使用したところ、すべて完璧に動作しました。

解説 (3)

これは暗闇の中でのショットですが、ANDの2つのオペランドを括弧で囲んでみてください。

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

解説 (3)