「クエリは破損しています」の対処法|みどシステム工房
「クエリは破損しています」の対処法
2019/11/13 WindowsUpdate が原因となる問題の対処法

パロマ―天文台
パロマ―天文台
【アメリカ合衆国カルフォルニア州】


 突然エラー表示が・・・

Accessの事務処理ツールを更新してテストでデータを入力していたら突然、エラー表示が出現しました。

クエリは破損しています
メッセージボックス「クエリは破損しています」

データ更新をしたときのエラー表示です。

この部分は何もいじっていないのに・・・

何か間違えたのか・・・

とりあえず、コードを見直しましたが、特に間違えはなさそう・・・

昨日までは問題なく正常に動作していたのに・・・

稼働中と同じバージョンの「POSレジ」もチェックしてみましたが、同じ現象が発生します。

原因がわからない・・・

Google先生に聞いてみました。

【AD】

 エラーの原因

いくつかのサイトで同じように「セキュリティーのアップデート」によるものと記述があったので、そのあたりが原因なんでしょう。

そして、マイクロソフトのホームページで確認すると、やはり2019年11月12日のアップデートが原因で テーブルを更新したときとクエリに条件を指定したときに問題が発生するとありました。

読み進むと、修正プログラムの配布は、Office365が2019年11月24日、その他は2019年12月10日を予定しているようです。

それまで待つか、修正するか・・・

解決方法は、インストールした更新プロクラムをアンインストールのが一番簡単そうですが、MSI buildsのだけのようです。

アンインストールできるか、[スタート]→[設定]→[更新履歴を表示する]→[更新プログラムのアンストール]でチェックします。

アンインストールするAccessの更新プログラムは次のとおりです。
・Access 2010: KB4484127
・Access 2013: KB4484119
・Access 2016: KB4484113

この一覧表からは、Accessの更新プログラムはありません。

更新プログラムのアンストール
「更新プログラムのアンストール」の一覧

次の更新プログラムが配布されるまで1か月くらい不自由しながら待つより、数時間で正常に使える方がいいので、マイクロソフトが推奨するとおり、プログラムを変更することにしました。

 対処法

変更点は、新しくクエリを作成し、そのクエリを介してUPDATEステートメントでデータ更新します。

手順

1 更新するテーブルの選択クエリを作成する。
2 UPDATEステートメントの[テーブル名]のところを作成した[クエリ名]に置き換える。

IDの値を条件としてフォーム上のテキスト値に更新するコードの例は次のとおりです。


Dim sql As String
DoCmd.SetWarnings False
sql = "UPDATE [クエリ名] SET [クエリのフィールド名1]=[テキスト名1],[クエリのフィールド名2]=[テキスト名2], [クエリのフィールド名3]=[テキスト名3] WHERE ID = t_ID"
DoCmd.RunSQL sql
DoCmd.SetWarnings True
				

 まとめ

マイクロソフトが推奨するとおり修正したら、以前のとおりエラーなくデータが修正されました。

アプリの規模によりますが、大きなシステムでこの修正することを考えると大変な労力になります。

それにしても、今回のエラーには驚かされました。

【AD】