0

重要な在庫管理システムを構築しています。返されたキー、紛失していないキー、またはレンタルされていないキーを特定することで、現在使用されていないキーを表示するクエリを作成しました。このクエリを keyActivity テーブル (キーのサインアウトを記録するために使用) の key_id の検索フィールドにコピーしました。問題は、テーブル keyActivity が閉じられ、再度開かれるまで、使用可能なキーを提供するためにクエリが更新されないことです。

例: keyActivity を開き、key_id = 5 が失われたことを示します。新しいレコードに移動し、サインアウトするキーを選択すると、key_id = 5 が使用可能として表示されます。キー = 5 がリストから削除されるのは、テーブルを閉じて再度開くまでではありません。

ここでは、キー 5 が ID 5 で失われていることが示されていますが、ID 7 でキーを選択すると、使用できないときに 5 が使用可能になっていることがわかります。 ここに画像の説明を入力

これを修正するか、意図したとおりに動作するように設定する方法はありますか。フォームを使用してすべての情報を表示する予定です。おそらくフォームソリューションはありますか?

4

1 に答える 1

2

Formテーブルデータを変更するほうがよいという提案。requery行った変更に従ってテーブルを更新し、それに応じて更新されたデータを表示するのは簡単です。詳細については、指定された参考文献もお読みください。

マルチユーザー環境でのデータの更新とロックに関しては、この記事が役立ちます。

" Access is NOT a database server. It's a desktop database. It has been pushed to the limit to support mutli-user environments, but only in the sense that you can share the "back end" database across a network." ... ...

" Even the record locking is performed by the Front End. All of the front end database applications share the "lock file" (a file with the same name as the database file, but with the extension LDB); but that file is simply a mechanism that the front ends use to determine which front end can make changes to the database." ....

再クエリと更新の違いは次のとおりです。

Me.Requeryフォームのレコードセット全体 (基になるデータ) を強制的に再読み込みします。これは、現在のフォームのすべてのレコードがリロードされることを意味します。現在の位置が失われるため、100 件中 10 件の記録に座っている場合は、最初の記録に戻ることになります。Me.Requery基本的に、フォームを閉じて再度開くのと同じです。他の同時ユーザーによって追加された新しいレコードはすべて利用可能になります。同様に、削除されたレコードはすべて消えます。Requery は基本的に、最初にデータをフォームにプルした "クエリを再実行" します。requery を使用して、リスト ボックスまたはコンボ ボックスのデータを更新することもできます。

Me.Refresh作業中の現在のレコードを保存します。また、現在のフォームに表示されているレコードへの変更 (追加や削除は除く) も取得します。フォーム上のすべての計算 (バインドされていないフィールド) が再計算されます。Refresh は、レコードセットをリロードしません。フォーム内の位置を失うことはありません (現在の記録にとどまります)。他のユーザーが追加した新しいレコードは表示されません。

于 2013-01-13T09:51:16.330 に答える