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’がローカルオブジェクトでない場合は、ネットワークの接続を確認するか、サーバー管理者に問い合わせてください。
今回のAccess MDBファイルは、処理自体はVBAで行われていました。
対処
今回は、Access 2019でのトラブルでしたが、「Access でメモリ不足エラーが発生する現象の対処策について」に書かれている、Access 2016 の C2R版で「OSとOficeが同じbit」の記述のレジストリを書き換えました。
レジストリ エディターの誤った使用は、システム全般に渡る重大な問題を引き起こす可能性があります。レジストリを変更する前にレジストリのバックアップをとってから行うことをお勧めします。
-
「方法1.レジストリ WorkingSetSleep を設定する」の記述通りに、WorkingSetSleepのというキーをDWORD型で作成して、値を1に設定しました。
-
次に、「方法 2. レジストリ MaxLocksPerFile を設定する」の記述通りに、すでに存在していたMaxLocksPerFileキーの値を10進数で200000に設定しました。
-
最後に、「方法 3. レジストリ MaxBufferSize の設定」の記述通りに、すでに存在していたMaxBufferSizeキーの値を10進数で102400に設定しました。
上記のようにレジストリの設定を変更して、再度Accessの処理を実行すると、エラーメッセージは表示されなくなり処理も行えるようになりました。
その他
今回のAccess MDBファイルのエラーメッセージが発生した箇所は、VBAでの更新処理(AddNew および Update)部分で、更新を合計すると数万件行っていました。
以前のAccess 2000よりもAccess 2019は、Access自体のメモリー使用量が増えているために発生したようですが、VBAのコーディングで自動トランザクションなどのVBAコーディングの変更・整理が重要になってくると思われます。
ちなみに、数万件の更新処理(AddNew および Update)を、SQLでの一括更新に書き換えることで、1時間以上かかっていた処理を、3分程度に大幅に短縮することができそうです。
広告