0

2 つのテーブルを作成しました。Assets と AssetMovements。メインの Assets フォームと Asset Movement フォームも作成しました。Asset Movement フォームは基本的に Assets フォームのレプリカですが、レコード ソースとして AssetMovements テーブルを持っています。AssetMovements テーブル (AssetTag フィールド) にルックアップを作成したので、ユーザーはコンボ ボックスから資産タグを選択でき、その資産の詳細がフォームの残りのフィールドに自動的に取り込まれます。フォームで編集可能なフィールドは、従業員を参照する「場所」および「担当者」フィールドのみです。現在、すべて正常に動作していますが、AssetMovements フォームを使用して新しいレコードを作成して保存すると、「資産」テーブルにある元のレコードの「場所」フィールドが更新されないという問題があります。同じことが言えます。のために '

新しい AssetMovement がそのレコードで作成されるたびに、Assets テーブルのメインの資産レコードを更新する方法はありますか?

4

1 に答える 1

0

あなたがやろうとしているのは、アセットの履歴(どこに誰が属しているか)を追跡することのようです。これを行う自然な方法は、アセットを更新し、変更をAssetMovementsテーブルに記録することです。

多くのデータベースでは、トリガーを使用してこれを実現できます。UIを介してアセットを更新する場合でも、直接SQLクエリを使用する場合でも、アセットが失敗することはありません。ただし、MSAccess自体にはトリガーがありません。したがって、UIでの実行に制限されます。

UIでこれを行うには、フォームにAfter Updateイベントを追加し、変更されたレコードをAssetMovementsにコピーします。その逆ではありません。それ以外の場合、新しいアセットの場合は、最初にAssetMovementを作成してから、アセットを作成します。

私はHansUpの提案も使用しました。つまり、場所/割り当てをAssetMovementsに配置し、フォーム/レポートに最新の値を表示するだけです。これについて私が嫌うのは、フォームが少し複雑になり、多くの更新が行われると、パフォーマンスが低下する可能性があることです。

繰り返しになりますが、パフォーマンスの低下が目立つほどDBが大きくなった場合は、とにかくデータを別の種類のデータベースに移行する必要があります。

于 2013-02-12T19:24:59.653 に答える