dlookup结果很慢

时间:2012-12-10 18:05:08

标签: vba ms-access-2010

我在访问权限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;

1 个答案:

答案 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.IDReceiving.Purchase_Price_ID上都有索引就会很慢。

OTOH,如果这不是您的意图,那么您应该能够直接从Purchase_Price表中检索Purchase_Info,而无需将其加入Receiving表。这应该是Purchase_Info.ID的索引:

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

最后,我不知道check是什么。它可以是表单上控件的名称。但是,不管它是什么,我宁愿给它一个不同的名字,因为check是一个保留字。我永远无法预测保留字作为对象名称何时会引起麻烦,所以宁愿完全避免它们。