1

大規模なリレーショナル Access 2010 データベースがあります。これは正規化されており、非常に遅いユニオン クエリが含まれています。したがって、キャッシュされたフィールドをいくつか作成することで、処理を高速化できると考えました。たとえば、tblOrder では CustomerName フィールドを作成します。このキャッシュされたフィールドを維持するために、tblCustomer から顧客の会社名を dLookup する変更前データ マクロを作成しました。それはうまくいきました。次に、ユーザーが会社名を変更すると、すべての子レコードが自動的に更新されるように、tblCustomer で After Update データ マクロを作成しました。これは機能しましたが、Before Change データ マクロが起動し、dLookup が古い会社名を返しました。どんな助けでも大歓迎です。

Northwing Database を使用して問題のサンプルを作成しました。http://www.thetechmentors.com/freestuff/exerciseFiles/msAccess/DlookupDatamacroProblem.zipからコピーをダウンロードできます。

4

1 に答える 1

1

[tblOrder] の変更前データ マクロを微調整して、そのテーブルで [CustomerID] が変更された場合にのみ名前の検索を実行するだけです。Updated()次のような関数を使用してそれを行うことができます。

ここに画像の説明を入力

[tblCustomer] の After Update データ マクロから実行された更新の結果としてマクロが起動すると、[tblOrder].[CustomerID] の値は変更されていないため、名前のルックアップはバイパスされます。

于 2014-12-20T14:34:18.250 に答える