ここ半年ほどお客様のwindows7からwindows10へのリプレースラッシュで忙しいんです。パソコンのほうはもちろんwindows10home64bitかwindows10pro64bitのどちらかしか選択肢がないわけですが、accessに関しては2003,2007,2010,2013,2016をそのまま使い続ける方、office2019proにする方、office365businessにする方、いろいろなんで、ひとたび問題が起こっても環境が違うんで参考にならなかったりなんですよね。
で、今回はwindows7pro32bit+access2010(office2010pro)32bit、機器は4台のネットワークで1台を親機にしてdata.mdb置いて、親機のprogram.mdbはc:\access\data.mdbにリンク、子機3台のprogram.mdbは\\親機\access\data.mdbにリンクという昔ながらのパターン。
なんでaccdbにしないの!という突っ込みは置いてといてもらって、まあ、access2010までは問題なく動いてたからよかんべと思って移行したわけですよ。
移行した構成はwindows10pro64bit+office365business(access2019相当)なんですが、ところどころで「メモリ不足」ってエラーがでるんですよ。常に出っぱなしだったら、本腰入れたんでしょうが、access2019をいったん閉じて、また、開いて、同じことを実行すると正常動作するし、何度やっても「メモリ不足」が出ちゃうときは親機で同じ作業をやると正常動作しちゃうという感じで、レジストリ(maxバッファサイズ)をいじってみたり、参照設定をいじってみたりしたけど改善せずなんですよ。
で、しょうがないんでoffice365からaccessのみアンインストールして、access2010をインストールしたんですが、結果はほぼ同じ。というか、もっと悪化して、access2010を閉じて開いて技が効かなくなって、「メモリ不足」が出る作業は常に親機でやるはめに…。
しかも業務中なんで思い切っていろいろいじれなかったんすが、ある日ちょうど社員の皆さんが帰宅間際に「メモリ不足」が出て業務止まったまま帰っていただけたんで、リモートデスクトップで入って、止まったところのクエリー見てたんですが、比較条件が4つぐらい更新項目が2つあるだけの単純なクエリーなんですよ。
そのクエリーを選択クエリーに変更してもやっぱり「メモリ不足」出る。そんで、これはと思って4つある比較条件をはずしていったらビンゴ!受注No>[Forms]![コントロール]![対象受注NO]を外したら動作したんですよ。
ためしに、親機側でこのクエリーを動かすと全くエラーにならない!何ぞこれ!
確かにこのお客様においてはデータを作った時点では受注NOがnull値なんですよね、で、Nz([受注No])>[Forms]![コントロール]![対象受注NO]と書いてみたら子機側でもエラー表示なく動作しやした。
ちなみに同じaccess環境用意して、自宅windows10pro32bit+access2010だと子機だろうが親機だろうがまったくエラーでません。
結論
1)windows10 64bit環境下で
2)access2010,2019に関係なくネットワーク経由でリンクをはったprogram.mdbで
3)null値になる項目に比較演算子を使用したクエリー(選択・更新問わず)を実行すると
4)「メモリ不足」なる"とんちんかん"なエラーメッセージを返してくる
※12月11日に定例office updateが降ってきましたが、相変わらずいろいろな場所で「メモリ不足」エラーが出るので、アプリレベルの修正はなされていないと思われます。
実はこのお客様、まだ、access2010のままなんで、来週あたりaccess2019に戻してみようかなと思ってます。
やっぱ、「うまく動いているものは変えない」の精神が一番っていうことですよね。
で、今回はwindows7pro32bit+access2010(office2010pro)32bit、機器は4台のネットワークで1台を親機にしてdata.mdb置いて、親機のprogram.mdbはc:\access\data.mdbにリンク、子機3台のprogram.mdbは\\親機\access\data.mdbにリンクという昔ながらのパターン。
なんでaccdbにしないの!という突っ込みは置いてといてもらって、まあ、access2010までは問題なく動いてたからよかんべと思って移行したわけですよ。
移行した構成はwindows10pro64bit+office365business(access2019相当)なんですが、ところどころで「メモリ不足」ってエラーがでるんですよ。常に出っぱなしだったら、本腰入れたんでしょうが、access2019をいったん閉じて、また、開いて、同じことを実行すると正常動作するし、何度やっても「メモリ不足」が出ちゃうときは親機で同じ作業をやると正常動作しちゃうという感じで、レジストリ(maxバッファサイズ)をいじってみたり、参照設定をいじってみたりしたけど改善せずなんですよ。
で、しょうがないんでoffice365からaccessのみアンインストールして、access2010をインストールしたんですが、結果はほぼ同じ。というか、もっと悪化して、access2010を閉じて開いて技が効かなくなって、「メモリ不足」が出る作業は常に親機でやるはめに…。
しかも業務中なんで思い切っていろいろいじれなかったんすが、ある日ちょうど社員の皆さんが帰宅間際に「メモリ不足」が出て業務止まったまま帰っていただけたんで、リモートデスクトップで入って、止まったところのクエリー見てたんですが、比較条件が4つぐらい更新項目が2つあるだけの単純なクエリーなんですよ。
そのクエリーを選択クエリーに変更してもやっぱり「メモリ不足」出る。そんで、これはと思って4つある比較条件をはずしていったらビンゴ!受注No>[Forms]![コントロール]![対象受注NO]を外したら動作したんですよ。
ためしに、親機側でこのクエリーを動かすと全くエラーにならない!何ぞこれ!
確かにこのお客様においてはデータを作った時点では受注NOがnull値なんですよね、で、Nz([受注No])>[Forms]![コントロール]![対象受注NO]と書いてみたら子機側でもエラー表示なく動作しやした。
ちなみに同じaccess環境用意して、自宅windows10pro32bit+access2010だと子機だろうが親機だろうがまったくエラーでません。
結論
1)windows10 64bit環境下で
2)access2010,2019に関係なくネットワーク経由でリンクをはったprogram.mdbで
3)null値になる項目に比較演算子を使用したクエリー(選択・更新問わず)を実行すると
4)「メモリ不足」なる"とんちんかん"なエラーメッセージを返してくる
※12月11日に定例office updateが降ってきましたが、相変わらずいろいろな場所で「メモリ不足」エラーが出るので、アプリレベルの修正はなされていないと思われます。
実はこのお客様、まだ、access2010のままなんで、来週あたりaccess2019に戻してみようかなと思ってます。
やっぱ、「うまく動いているものは変えない」の精神が一番っていうことですよね。
※コメント投稿者のブログIDはブログ作成者のみに通知されます