2016-08-04 234 views
1

我一直在为此工作大约一个小时,并且无法使函数无错运行。我从this页面使用Allen Browne的ELOOKUP功能。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") 

我得到的错误“过几个参数:预期1”。

我已经通过代码加强,是能够提取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) 

我曾尝试:

  1. 将方括号中的所有字段名封装起来。同样的错误。
  2. 围绕我的标准值添加单引号。同样的错误。
  3. 更改的功能行:Set db = DBEngine(0)(0)set db = CurrentDb,同样的错误。
  4. 更改dbOpenForwardOnlydbOpenSnapshot。同样的错误。

我将strSQL值复制到Access的查询生成器中,它运行正常,所以我知道我构建了一个有效的字符串。我正在使用Access 2010.

我在做什么错?

+0

嗯,你有没有试过'设置rs = db.OpenRecordset(strSql)' –

+0

@GaryEvans刚刚尝试过,同样的错误。 – MoondogsMaDawg

+2

'zhqry_ActiveGrid_3_Final'(或其子查询)是否有像例如'形式!myForm的!myValue'?它们在Access中打开查询时进行评估,但在打开记录集时不会进行评估。 - 请参阅“ELookup()的限制:... DLookup()可以调用表达式服务来解析参数..” – Andre

回答

2

限制ELookup()的:)

使用DLookup(可以调用表达式服务来解析参数如:
使用DLookup( “姓”, “客户机”,“客户端ID = [表格]。 [Form1上] [客户端ID]“)

这也适用于作为Domain参数的查询 - 像这样的参数在Access查询自动解决,而不是在一个记录,这ELookup()用途。

您可以修改ELookup()以不直接打开记录集,而是从Querydef对象中打开。然后您可以在QD对象上拨打Eval_Params()来自this answer来解析参数。

+0

我从来没有看到“改善”DLookup的不同尝试的任何真正的优势。 – Gustav

相关问题