我在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;发布于 2012-12-11 05:21:38
我不确定为什么要使用查询作为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上都有索引,它就会变慢。
如果这不是您的目的,那么您应该能够直接从Purchase_Info表中检索Purchase_Price,而不需要将它连接到Receiving表。有了Purchase_Info.ID上的索引,这应该很快
DLookup("Purchase_Price", "Purchase_Info", "ID = " & check)最后,我不知道check是什么。它可以是窗体上控件的名称。但是,不管它是什么,我更喜欢给它一个不同的名字,因为check是一个保留字。我永远无法预测什么时候作为对象名称的保留字会带来麻烦,所以我倾向于完全避免它们。
https://stackoverflow.com/questions/13806574
复制相似问题