1

Access 2010 で dlookup の実行が非常に遅いという問題がありますが、保存したクエリを既に開いている場合は、かなり速く実行されます。これがなぜなのか、どのように問題を回避するのかについてのアイデアが必要です

編集

txtPurchase_Price = DLookup("Purchase_Price", "qryPurchaseInfo", "ID = " & check)

それがdlookupです

そして、クエリのSQLは

SELECT Receiving.Serial,Purchase_Info.Purchase_Price, Purchase_Info.Check_Number,
  Purchase_Info.Purchase_Date, Purchase_Info.ID, Receiving.Source
FROM Purchase_Info INNER JOIN Receiving ON 
  Purchase_Info.ID = Receiving.Purchase_Price_ID;
4

1 に答える 1

1

のデータ ソース (ドメインオプション)としてクエリを使用している理由がわかりませんDLookupPurchase_Info.ID許容値のセットを値として存在するものに制限することが意図されている場合、これは理にかなっていReceiving.Purchase_Price_IDます。

ただし、その場合は、代わりに単純なクエリを試してください。

SELECT
    Purchase_Info.Purchase_Price,
    Purchase_Info.ID
FROM Purchase_Info INNER JOIN Receiving
ON Purchase_Info.ID = Receiving.Purchase_Price_ID;

Purchase_Info.IDクエリが劇的な速度の向上をもたらすかどうかは懐疑的ですが、 と の両方にインデックスがある限り、なぜ遅くなるのか理解できませんReceiving.Purchase_Price_ID

OTOH、それが意図していない場合は、テーブルに結合する必要なくPurchase_Price、テーブルから直接取得できるはずです。これは、次のインデックスを使用すると迅速に実行できます。Purchase_InfoReceivingPurchase_Info.ID

DLookup("Purchase_Price", "Purchase_Info", "ID = " & check)

結局何だか分からないcheck。フォーム上のコントロールの名前である可能性があります。checkしかし、それが何であれ、予約語であるため、別の名前を付けたいと思います。オブジェクト名としての予約語がいつ問題を引き起こすかは予測できないので、完全に避けることを好みます。

于 2012-12-10T21:21:38.010 に答える