1

これに対する明確な答えがあるかどうかはわかりませんが、データ ストアとして SQL Server 2008 を使用する Ms Access アプリケーションを使用しています。すべてのテーブルは Access アプリケーションから SQL Server にリンクされており、アプリケーションは Citrix サーバーでホストされています。アプリケーション内のすべてのフォームはバインドされたフォームです。最近、データを編集または保存しようとすると問題が発生する特定のフォームが 1 つあります。フォームが永久にハングし、セッションを強制終了する必要があります。フォームは SQL サーバー上のテーブルにリンクされており、テーブルには主キーとして Identity 列があります。奇妙なことに、このフォームは他のフォームほど頻繁に使用されておらず、テーブルには他のフォームの半分のレコードさえありません。その他の使用率の高いテーブル。フォームには 4 つのフィールドしかなく、Nvarchar のフィールドは 1 つだけです。他のフォームには、より多くの使用率とデータを備えたより多くの Nvarchar フィールドがあり、問題は発生していないようです。ネットワークの問題はアプリケーション全体に影響を与える可能性があり、1 つのフォームだけでなく、SQL サーバーのインデックスも毎日作成されるため、インデックス作成の問題ではないと考えています。なぜこれが起こるのか誰にも分かりません。

4

2 に答える 2

2

フォームが破損していると思われる場合は、 メソッドSaveAsTextLoadFromTextメソッドを使用してフォーム定義をテキスト ファイルとして保存し、別の名前で再ロードします。

Application.SaveAsText acForm, "frmMainMenu", "frmMainMenu.txt"
Application.LoadFromText acForm, "frmMainMenu_new", "frmMainMenu.txt"

これらの方法は、Erik の提案ほど包括的ではありませんが、迅速かつ簡単です。逆コンパイルして破損を修正することもできます。このリンクで2つの回答を参照してください: HOW TO decompile and recompile

破損が問題の原因でない場合は、ブレーク (デバッグ) モードでフォームのコードをステップ実行してみてください。フォームのオープン プロシージャの最初の実行可能な行に一時的なブレーク ポイントを配置します。Form Open の手順がない場合は、追加します。一時的なブレークポイントの設定に慣れていない場合は、単語を追加するだけですStop:

Private Sub Form_Open(Cancel As Integer)
    Stop

フォームを開いた後、キーを使用して一度に 1 行ずつコードをステップ実行できF8ます。コードがハングする原因となっている行を特定できることを願っています。

于 2012-08-03T03:25:47.967 に答える
2

Access フロント エンドを再構築してみてください。新しいデータベースを作成し、データベース固有のオプションを一致するように設定します (フィールドの動作、自動名前追跡のオフまたはオン、SQL 構文レベルなど)。次に、すべてのフォーム、レポート、マクロ、VB コード、および古い Access からのデータをインポートします。データベースを新しいものに。起動オプションを適切に設定し、改善点がないか確認してください。

Access データベースは微妙に破損する可能性があり、完全な再構築がそれらを修正する唯一の方法である場合があります。

必ずバックアップを取ってください。

于 2012-08-03T02:20:50.150 に答える