アトム電器 三軒家店(有限会社 おかもとでんか)のホームページ。大阪市大正区にある町の電気屋さん。家電製品の販売、エアコン、電気工事、パソコンからリフォーム、オール電化など電気のことならなんでもお任せ下さい!アトム電器三軒家店

Access 2019 で「クエリが完了できません」などのエラー

アプリトラブル

Windows 7 のサポートが終了するのに伴って、古いパソコン(Windows 7 + Access 2000)から、新しいパソコン(Windows 10 + Access 2019)に環境が変わり、今まで問題なく使えていた Access MDBファイルでの処理が、エラーメッセージが表示されて処理が完了しなくなってしまったトラブルについてです。

現象

Windows 10 Pro 上の Access 2019で、今まで利用していた Access MDBファイルを使って処理を行うと、次のようなエラーメッセージが表示されて、処理が完了しなくなってしまいました。

エラーメッセージの一つ目は、クエリを完了できません。クエリ結果のサイズがデータベースの最大サイズ(2 GB)より大きいか、クエリ結果を一時的に保存するディスクの空き容量が不足しています。
クエリを完了できません。

もうひとつは、オブジェクト ‘Databases’が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。’Databases’がローカルオブジェクトでない場合は、ネットワークの接続を確認するか、サーバー管理者に問い合わせてください。
'Databases'が見つかりませんでした。

今回のAccess MDBファイルは、処理自体はVBAで行われていました。

対処

今回は、Access 2019でのトラブルでしたが、「Access でメモリ不足エラーが発生する現象の対処策について」に書かれている、Access 2016 の C2R版で「OSとOficeが同じbit」の記述のレジストリを書き換えました。

レジストリ エディターの誤った使用は、システム全般に渡る重大な問題を引き起こす可能性があります。レジストリを変更する前にレジストリのバックアップをとってから行うことをお勧めします。

上記のようにレジストリの設定を変更して、再度Accessの処理を実行すると、エラーメッセージは表示されなくなり処理も行えるようになりました。

その他

今回のAccess MDBファイルのエラーメッセージが発生した箇所は、VBAでの更新処理(AddNew および Update)部分で、更新を合計すると数万件行っていました。

以前のAccess 2000よりもAccess 2019は、Access自体のメモリー使用量が増えているために発生したようですが、VBAのコーディングで自動トランザクションなどのVBAコーディングの変更・整理が重要になってくると思われます。

ちなみに、数万件の更新処理(AddNew および Update)を、SQLでの一括更新に書き換えることで、1時間以上かかっていた処理を、3分程度に大幅に短縮することができそうです。