我一直在研究这个问题大约一个小时,并且无法正常运行该功能。我正在this页面使用Allen Browne的ELOOKUP功能。
以下是当前调用公共函数的代码:
Dim r As Double
Dim Q1 As Double
Dim i1 As Double
r = Me!txtRepeat
Q1 = Me!txtQty1
i1 = ELookup("dblIndex", "zhqry_ActiveGrid_3_Final", "dblRepeat = " & r & " AND dblQuantity <= " & Q1, "dblQuantity DESC")
我收到错误&#34;参数太少:预期为1。&#34;
我已经完成了代码,并且能够提取strSQL:
SELECT TOP 1 dblIndex
FROM zhqry_ActiveGrid_3_Final
WHERE dblRepeat = 12 AND dblQuantity <= 55
ORDER BY dblQuantity DESC;
在ELOOKUP函数的这一行抛出实际错误:
Set rs = db.OpenRecordset(strSql, dbOpenForwardOnly)
我试过了:
Set db = DBEngine(0)(0)
至set db = CurrentDb
,错误相同。dbOpenForwardOnly
更改为dbOpenSnapshot
。同样的错误。我将strSQL值复制到Access的查询构建器中,它运行正常,所以我知道我正在构建一个有效的字符串。我正在使用Access 2010。
我做错了什么?
答案 0 :(得分:2)
ELookup()的限制:
DLookup()可以调用表达式服务来解析参数,例如:
DLookup(&#34; Surname&#34;,&#34; Clients&#34;,&#34; ClientID = [Forms]。[Form1]。[ClientID]&#34;)
这也适用于用作Domain
参数的查询 - 此类参数在Access查询中自动解析,但不在ELookup()
使用的记录集中解析。
您可以修改ELookup()
以不直接打开记录集,而是从Querydef对象。然后,您可以在QD对象上从this answer调用Eval_Params()
来解析参数。