2012-12-10 92 views
1

我在訪問2010年有一個問題,我的dlookup運行速度很慢,但如果我已經打開保存的查詢,它運行速度非常快。任何想法這是爲什麼和如何解決問題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; 
+0

DLookUp通常很慢。你有沒有合適的索引? – Fionnuala

+0

是的,我意識到DLookUp通常很慢,但是當我在不同的表上運行dlookup查詢時,它運行速度更快。 – Egryan

+0

已經有很多索引是的,我做 – Egryan

回答

1

我m不確定爲什麼你使用查詢作爲數據源(選項)爲DLookup。如果您的意圖是將一組允許的Purchase_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.IDReceiving.Purchase_Price_ID指標理解爲什麼它會是緩慢的。

OTOH,如果這不是你的意圖,那麼你應該能夠直接從你的Purchase_Info表中檢索Purchase_Price,而無需將其加入到Receiving表中。這應該是快速與指數Purchase_Info.ID

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

最後,我不知道是什麼check是。它可能是表單上控件的名稱。但是,不管它是什麼,我寧願給它一個不同的名字,因爲check是一個保留字。我永遠無法預測何時保留字作爲對象名稱會造成麻煩,所以寧願完全避免它們。

+0

我會嘗試你的建議,看看有沒有什麼明顯的改進。已遠遠有檢查它是基於掃描的序列號的以前的DLookup的結果。我不知道這是一個保留字。 – Egryan