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つ目のクエリが動作するのはなぜですか?
25
3
コードにエラーはありませんが、次のような原因でエラーが発生します。
データベース(MS-Accessファイル)を読み取り専用フォルダに格納していると、アプリケーションの実行中に接続が強制的に開かれません。したがって、ファイルのパーミッションとそれを含むフォルダのパーミッションを変更してください。たとえば、「C:プログラムファイル」では、ほとんどのCドライブファイルが読み取り専用に設定されていますので、このパーミッションを変更すると、この問題は解決します。
この答えが普遍的に正しいかどうかはわかりませんが、私はこの質問を少し変えて解決しました。
セレクトクエリをテーブルに結合して処理するのではなく、セレクトクエリを変更して一時テーブルを作成しました。そして、その一時テーブルを実際のテーブルに使用したところ、すべて完璧に動作しました。
これは暗闇の中でのショットですが、ANDの2つのオペランドを括弧で囲んでみてください。
On ((A = B) And (C = D))