Accessでクエリは破損していますと出てしまう対策について_2

前記事ではウイザードで作った更新クエリの場合について紹介しましたが、こちらでは、VBAで「クエリは破損しています」と出てしまった場合の一時的な回避方法を実例で紹介します。

先ほどのテーブルを利用して、簡単な人事異動アプリをフォームで作ってみました。見たまんまですが、社員番号であるIDと移動先部署を入力して「更新」を押すと、社員テーブルの該当するIDの部署が更新されます。メッセージボックスで表示されているのが、作成されるSQL文字列です。

クエリが破損するAccess

実行すると・・・・でました。クエリは破損しています。

クエリは破損しています対策

デバッグを押して問題個所を見てみましょう。 テキストボックスを参照しながら変数に代入したSQL文をDoCmd.RunSQL で実行しようとしたときにエラーが出ています。この時に参照しているのは、UPDATEの後ろにある「社員」という名前のテーブルです。

SQL実行でエラーになっちゃう
ビフォー

そこでこの「社員」テーブルを、まるまる参照したクエリを作成して、文字列にはそのクエリに対してUPDATEするようにします。

クエリの作り方は前記事であるこちらを参考にしてください。

クエリが作れたら、SQL文のテーブルの部分を書き換えます。WHEREなどでもテーブルを指定している場合はそちらもクエリの名前に差し替えるとよいでしょう。

テーブルをクエリに差し替えた
アフター 社員という名前のテーブルを、新たに作ったwao_社員 クエリに書き換えた。

メッセージボックスに表示されたのは書き換え後のSQL文です。 さて、こんどはどうでしょう?

仮で名前をつけたクエリを参照している

無事に田中さんは「すぐやる課」へ人事異動できました。

更新クエリできた

同じように、更新に失敗する箇所で「デバッグ」を押して、実行しようとしているSQL文のテーブル部分をまるごと参照するクエリを作り、SQLの名前を差し替え続けると、とりあえず動く対策アプリを用意できると思います。

対策方法についてはマイクロソフトの本家ISSUEに公開されています。https://support.office.com/en-us/article/access-error-query-is-corrupt-fad205a5-9fd4-49f1-be83-f21636caedec

Microsoftの対策済み更新予定は?

こちらの アザースblog さんによれば、2019年11月24日予定とのこと。

[解決済]Accessのクエリは破損していますエラーは[自動更新を個別に停止するツール][更新を無効にする]で防げるかも

Microsoftの更新予定は、パソコンドック24さんの紹介によれば、2019年12月10日のようです。 https://www.pcdock24.com/blog/?p=43320