[Access]エラー:クエリは破損しています

投稿者:

2019年11月中旬ごろからAccessで更新クエリを実行しようとすると「クエリ’xxxx’は破損しています」というエラーが出るようになってしまった。

ネットで検索してみると同様のエラーで困っている書き込みが見られ、その原因が2019年11月のOfficeアップデートである事が分かった。つまりMicrosoftがバグ付きアップデートを配信してしまったわけだ。

迷惑極まりないが、とりあえず以前のバージョンに戻せば不具合は無くなるようだ。
具体的なやり方は以下のサイト等を参考にしてください。

https://maru901.at.webry.info/201911/article_8.html
https://access-support.jp/trouble/access-query-is-corrupt/

Microsoftもエラーの重大性を認識していて、Office365とAccess2019を11月24日、Access2010,2013,2016を12月10日ごろに修正パッチを配布するとのこと。

いや遅いでしょ

かなり広範囲でエラーが発生するので即座に対応してくれよ。


さて、この不具合をより突き詰めてみると、SQLのUPDATE文でWHERE句を使用しているときにエラー発生しているようだ。

--エラー:クエリは''破損しています
UPDATE テーブル1 
SET メッセージ='Hello World' 
WHERE ID=1;

これはエラーが起きる

しかし、WHERE句を抜いたらエラーは出ない。

--正常に処理される
UPDATE テーブル1 
SET メッセージ='Hello World';

とはいえ、WHERE句無しではレコード全件が更新されてしまう。そんなのは全く実用的ではない。

Microsoft公式のこちらのページを見るとUPDATEの対象がテーブルでなくクエリだったら正常に処理されると書いてある。(ページの後半のあたり)

https://support.office.com/en-us/article/access-error-query-is-corrupt-fad205a5-9fd4-49f1-be83-f21636caedec

つまり、テーブル部分を全件抽出するクエリにすればいけるはずだ。

上の例を改変するとこうなる。

--テーブルをクエリにしてみた
UPDATE (SELECT * FROM テーブル1) as tbl1
SET メッセージ='Hello World'
WHERE ID=1;

これを実行すると意図したとおりに’ID’が1のレコードのみ’メッセージ’が「Hello World」に更新される。

対処療法でしかないが、エラーでお困りの方は修正パッチが配布されるまで、これでしのいでみたらどうだろうか。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください