システムwiki

ランダムなmsアクセスがアイドル時にクラッシュする

PaulTwo 受付中 最終更新日:2020-10-10 22:15

過去15年ほどの間に開発された、リンクされたSQLtableを備えたカスタムMS AccessApplicationがあります.最近、Applicationを64ビット(VBA7)互換にアップグレードしました.アップグレードの前と後の両方で、Applicationはランダムにクラッシュしました.
アップグレード以降、一部のユーザーにとっては頻度が増加しているようです.

Applicationは、アイドル状態、またはランダムな期間非アクティブのままにするとクラッシュします.一部のユーザーは、自分のPCをロックおよびロック解除することでクラッシュをトリガーできます.ただし、ほとんどの場合、ユーザーが別のApplicationに切り替えたとき、およびユーザーが元に戻ったときにクラッシュします.
MS Accessにクラッシュします.1人のユーザーの場合、これは30分ごとに発生しますが、私自身は、少なくとも数時間Applicationを未使用のままにした場合にのみ発生します.

Applicationはmdeファイルとして配布され、各ユーザーはC:\にローカルコピーを持っています.

データベースversion:MS Access 2002-2003形式

すべてのPCはWindows 1064ビットで、Office 365がインストールされています

障害のあるApplication名:MSACCESS.EXE、version:16.0.11901.20176、タイムスタンプ:0x5d3baa73

障害のあるモジュール名:MSACCESS.EXE、version:16.0.11901.20176、タイムスタンプ:0x5d3baa73
例外コード:0xc0000005
障害オフセット:0x000000000020f469
障害が発生しているプロセスID:0x9de4
障害が発生しているApplicationの開始時間:0x01d556352e77345b
エラーが発生したApplicationパス:C:\Program Files\Microsoft Office\Root\Office16\MSACCESS.EXE
エラーが発生したモジュールのパス:C:\Program Files\Microsoft Office\Root\Office16\MSACCESS.EXE
レポートID:9ac488a0-25fe-45e7-bf2a-ba97c17c56e4
障害のあるパッケージの完全名:

障害が発生したパッケージ相対ApplicationID:

参照:

返信リスト(回答:10)

1 #
TomvanS

はすべて使用中の参考資料ですか? Forms 2.0とActiveXデータオブジェクトをチェックし、再度コンパイルします.

コンパイル済みのACCDEフロントエンド(FE)を使用しているのは誰でも?

文字通りC:\を意味しましたか?それは珍しいフォルダです.

信頼できる場所のFEは?

新しいACCDEを作成する前にFEを廃止しましたか?

応答1# ->にスキップ
2 #
PaulTwo

こんにちは、トム

Applicationをコンパイルできないので、ActiveXを削除できません.ADODB.Recordsetとして宣言された多数のレコードセットがあります

また、フォーム2.0を削除できないようになっています.次の画像を参照してください.

また、ApplicationはMDEフロントエンドにコンパイルされたMDBとして2002-2003互換性を維持しています.

C:\とは、フロントエンドをユーザーのローカルドライバに保存することを意味します.実際のパスは、C:\Users\\Cornucopia\TheSource

乾杯

ポール

応答2# ->にスキップ
3 #
TomvanS

これが私のプロジェクトであるならば、それがフォームリファレンスを必要とするものを超えていることを知っています(結局のところ*は* formsパッケージの後に;これはExcelへのLotus123の参照を追加するようなものです)、私はすべてのオブジェクトをテキストにエクスポートして検索します.これらの項目を使用するために.私は...するだろう
彼らが必要な理由を理解したい、そしてそれらを交換することを検討したい.

私はすでにDAOがある間、私のために何をしているのかを見てください.

CDOの使用に質問します.Windows Server 2000 ERAからです.Outlookの参照ができないことは私にとって何をしているのですか?またはおそらく償還のようなサードパーティのライブラリー.

CreateObjectの使用も検査されます.私は早い段階的なバインディングと遅れの両方を見たくありません.

すべてのモジュールの上部に明示的に明示的に選択肢がありますか?

すべてのユーザーは、WindowsのアップデートとOfficeの更新を定期的に実行しますか?

なぜあなたはまだ12年前に置き換えられたMDB形式の上にいますか?

応答3# ->にスキップ
4 #
PaulTwo

申請書をACCDBに変更しました.

オプションExplicitはEver Moduleで使用されます.

あなたの返事のトーンから、これが複数のプログラマーによって15年以上にわたる非常に古いApplicationであるので、ここでBuchのための最高のbangがApplicationを通過し、必要な必要はないことを確認するでしょう.フォーム、アクティブx、および

短い.それはクラッシュを解決する最初の場所として公正であるでしょうか?

歓声、

Paul

応答4# ->にスキップ
7 #
TomvanS

クラッシュは、多くの場合、ランダム(より良い:出現)です.アプリの全体的な品質を向上させること自体は良いことであり、コードにアクセスできるので、クレイジーなアイデア(たとえば、レコードセットが閉じられずに開かれている)がないか検査することができます.
いくつかの安定性の問題を修正します.

しかし、これが私の仕事であれば、まず問題を単純化し、ローカルマシンでテストベッドを実行します.これには、(不安定な)ネットワークハードウェアは含まれません.絶対にクラッシュさせることができない場合、それは重要なデータポイントです.

アプリにトレースを装備することもできるので、クラッシュが発生した場所を確認し、そこから学ぶことができます.

良い戦略は1つではなく、状況に応じて異なります.どれだけの経験があるかわかりませんが、デバッグに必要な人材を雇う必要があるかもしれません.何年にもわたって堅実に実行されている多くのAccessインストールがあると言えば十分ですが、
あなたの状況は間違いなく奇妙なものです.

応答7# ->にスキップ
8 #
PaulTwo

Certinaly VBAとMS Accessは、私が広範囲に経験したものではないため、これは急な学習曲線でした.これは中小企業であるため、さまざまな問題をカバーする必要があります.

アプリからフォームとCDOを削除しましたが、ADODB.Recordsetのインスタンスが多すぎて、ActiveX参照をすばやく削除できません.

Applicationは、新しく開いて未使用のときに最も安定しているため、正しく構築されていないコードがあると思います.誰かがフォームを開き始めると、安定性が低下します.トレースを追加するウサギの穴を掘り下げて、原因を見つけることができれば
ここで更新します.

乾杯

ポール

応答8# ->にスキップ
9 #
Vivienn
電話によるテクニカルサポートを利用できると思います.このフォーラムのサポートが制限されている場合があります.
応答7# ->にスキップ
10 #
PaulTwo

私の進捗状況に関するいくつかの情報.

別のプログラマーから送られてきました:https://allenbrowne.com/bug-03.html、そしてその情報に基づいて「トラック名の自動修正情報」をオフにしました.

まだクラッシュはありますが、頻度は大幅に減少しています.

応答3# ->にスキップ
5 #
PaulTwo
フォームがクリップボードメソッドに使用されているように見えますが、 "PutinClipboard"の代替方法はありますか?
応答5# ->にスキップ
6 #
TomvanS

はい、使用できるWindows API呼び出しはあります.

または、もう少し深く考え直してください.クリップボードに何かを置いて、すぐに使用して他の場所に貼り付けることもあります.おそらく、同じことをオートメーションを使用して実現できます.