プチIT化

Accessの”応答なし”を回避しようと試みた話

こんばんは、わたあめです。今日は解決記事ではないのですが、Accessの”応答なし”が気になって回避策を試してみたという記事です。結論根本的解決はしなかったので、根本的解決をお求めの方は、「チッ」となるので読まない方が良いです。

なんかスイマセン(汗)

今回試してみたのは、Accessを複数CPUではなく単数CPUで動かしてみるという試みです。手順等気になる方は、どうぞ。それではいってみましょう!

設定等は自己責任でお願いいたします。

症状

今回、Accessが"応答なし"になったのはどういう状況だったか、わたあめの状況を書かせていただきます。

  • クエリを表示させようとすると、ビジーカーソルになる
  • クリックしまくると、半透明の白がかってしまう
  • タイトルバーには"(応答なし)"と表示される
  • タスクマネージャでCPUの使用率が%変動している:CPU使われているので完全にとまっていない?
  • レコード数は1400件くらい
  • フィールド数は、23くらいで計算処理なども入れている

待っていれば処理はそのうち終わるし、CPUやメモリは働いているようなので、"応答なし"だとしても、今回は処理が完全に止まっているわけではなさそうな動きでした。

試み:Accessをシングルコアで動作させる

調べてみると、複数のコアで動作していると応答がなくなるという情報がありました。

単一のコアで動作させるように設定すればいいのでは?!と試してみることにしました。

手順

それでは、今回行った設定の手順です。

  1. Accessを起動
  2. Windowsボタン>[すべてのプログラム]>[Windowsシステムツール]>[タスクマネージャ]
  3. [Microsoft Access]を右クリック>[詳細の表示]
  4. (MSACCESS.EXEが既に選択されている状態)右クリック>[関係の設定]
  5. CPUのチェックをどれか一つに絞る
  6. [OK]ボタン

この設定後、立ち上げたAccessは閉じずにそのままファイルを開きます。

一回閉じてしまうと、設定が元に戻って複数コアで動きます。

結果ですが…結局応答なしになってしまいました。

わたあめ
わたあめ
まじか!(って思った人、ご期待に沿えず申し訳ございません。)

先ほど参考に挙げたURLは2010年頃の記事、Windows7が主流だった時代ですよね。時はすすんで、Windows10が主流の現在。(Officeでいうと2019だったり2016だったりだと思います。)複数コアだからが原因じゃなかったみたいです。少なくとも私の環境では!

対処:待つ

今回は処理を待てば終わるので、処理を待つという運用対処にしました。

その他対処方法

調べた限り、他にも試してみる価値のありそうなものもありました。

DoEvent関数を使って、VBAマクロでクリックなどの処理を受け付けるようにする

処理の途中でもOSからの入力処理を受け付けるという関数があるみたいです。今回は試しませんでしたが、"応答なし"をどうしても解決したくなった時には試してみようと思います。今日はひとまず、キーワードとして覚えておけば良いかな?という所です。

おまけ:複数コアと単数コアでの処理時間

折角なので、マルチとシングルとで処理速度はどうなるのか、比較してみました。

わたあめ
わたあめ
複数の方が早いに決まってる!

手動でストップウォッチ開始・停止しただけなので、厳密な処理時間ではないのですが、軽くやってみました。

複数コアで実行1分46秒
単数コアで実行1分48秒

処理時間はほぼ変わらない…!でした。もちろん、複数のCPUで処理するに向くデータとかあると思うので、条件変えていけば効果あると思うんですけど。今日手持ちの応答なしが良く出るAccessファイルでは処理時間は変わらなかったです。

さいごに

最後までお読みいただき、ありがとうございます。スッキリ解決ではなく、試してみたよ結果事象改善せずというお試し実況記事になってしまいました。応答なし問題、どうしたものか~!

flier(フライヤー)