我在访问权限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;
答案 0 :(得分:1)
我不确定您为什么使用查询作为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.ID
和Receiving.Purchase_Price_ID
上都有索引就会很慢。
OTOH,如果这不是您的意图,那么您应该能够直接从Purchase_Price
表中检索Purchase_Info
,而无需将其加入Receiving
表。这应该是Purchase_Info.ID
的索引:
DLookup("Purchase_Price", "Purchase_Info", "ID = " & check)
最后,我不知道check
是什么。它可以是表单上控件的名称。但是,不管它是什么,我宁愿给它一个不同的名字,因为check
是一个保留字。我永远无法预测保留字作为对象名称何时会引起麻烦,所以宁愿完全避免它们。