2016-08-04 90 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