2016-08-04 3 views
1

私はこれを約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.」

Iは、コードを介して段付きとあったます。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. dbOpenForwardOnlyからdbOpenSnapshotに変更されました。同じエラー。

私はstrSQLの値をAccessのクエリービルダーにコピーしたので、有効な文字列を作成していることが分かりました。私はAccess 2010を使用しています。

何が間違っていますか? ELookupの

+0

hmmm、あなたは 'set rs = db.OpenRecordset(strSql)'を試してみましたか –

+0

@GaryEvansちょうど同じエラーを試みました。 – MoondogsMaDawg

+2

'zhqry_ActiveGrid_3_Final'(またはそのサブクエリ)は、例えば以下のようなパラメータを持っていますか? 'Forms!myForm!myValue'? Accessでクエリを開くときに評価されますが、レコードセットを開くときには評価されません。 - 「ELookup()の制限事項:」を参照してください。DLookup()は式サービスを呼び出して引数を解決することができます.. " – Andre

答えて

2

制限():
のDLookup( "姓"、 "クライアント"、「クライアントID = [フォーム]:

のDLookupは()のような引数を解決するために、式サービスを呼び出すことができます。 [Form1の] [クライアントID] ")

これもDomainパラメータとして使用されるクエリに適用されます - 。このようなパラメータはなく、レコード、ELookup()用途で、Accessクエリに自動的に解決されています。

ELookup()を変更すると、レコードセットを直接開くのではなく、Querydefオブジェクトから開くことができます。 QDオブジェクトのthis answerからEval_Params()を呼び出して、パラメータを解決することができます。

+0

私はDLookupを "改善する"ためのさまざまな試みの本当の利点を見たことがありません。 – Gustav

関連する問題