1

メイン ページがデータベースのメイン テーブル (会社情報を保持する) にバインドされたフォームである Microsoft Access アプリケーションがあります。これは、SQL Server バックエンドへのリンク テーブルです。データベースには約 40000 のレコードがあり、複数のユーザーがいます。

通常、フォームはフィルターなしで開かれます。

特定の会社を見つけるためのドロップダウン リストがあります。これは、where 条件でフォームを再度開きます。ユーザーは、特定の会社との作業が終了すると、フィルター ボタンをオフにする傾向があります。

フィルターが設定されていない場合、Access が SQL Server テーブルの共有ページ ロックを解除することを発見しました。これは、他の誰かが会社のテーブルに新しいレコードを更新または挿入しようとしたときに問題を引き起こす可能性があります (共有ロックが解放されるのを待ってタイムアウトします)。Access は、フィルタリングが行われるとすぐにページ ロックを解除します。

また、フォームの下部にあるナビゲーション ボタンを使用して最後のレコードに移動すると、ページ ロックが解除されることも発見しました。

とにかく、プログラムでアクセスしてこのロックを解放することができます-on_ApplyFilterイベントの最後のレコードに移動しようとしました-しかし、これはフィルターが削除される前ではなく、削除される前に発生すると思います(キャンセルできるため)。

4

2 に答える 2

0

クエリを作成し、フォームの背後でクエリを使用できます。テーブルから * を選択するだけで、コードを 1 つ追加できます。

sSQL = "SELECT * FROM MyTable with (NoLock);"

Me.RecordSource = sSQL
于 2013-10-23T12:48:40.347 に答える