2016-04-28 8 views
-1

を使用してレコードセットを作成することはできません。問題のフォーム要素は、テキストボックスであると、私は次のクエリを作成し、TextBox2を、ユーザーが入力した値を使用してTEST_TABLEからレコードを取得するためにTestQueryそれを命名TextBox2をアクセス - クエリーは私が動的にテーブルからレコードを取得するために<strong>TestFormを</strong>というタイトルの簡単なフォームを作成しているように</p> <pre><code>ID Code ----- ------- 1 A 2 B 3 C </code></pre> <p>としてTEST_TABLEというタイトルのテーブルを持って手動で実行すると正常に動作しますが、それを

命名されています

SELECT * 
FROM TestTable 
WHERE (((TestTable.Code)=Forms![TestForm]![TextBox2])); 

クエリ作品私は手動でそれを実行すると良い。

私のようなレコードセットにクエリ結果を取得するには、次のサブプロシージャを作成 -

Sub Retrieve() 
    Dim db As Database 
    Set db = CurrentDb 
    Dim rst As Recordset 
    Set rst = db.OpenRecordset("TestQuery") 'Shows run-time error on this step 
    MsgBox (rst!ID) 
End Sub 

しかし、私は、このサブプロシージャを実行しようとすると、私は "ファイル名を指定して実行時エラーを示すエラーを取得します3061 - パラメータが少なすぎます。 1 'を予期します。

ここに何か不足していますか?それとももっと良い方法がありますか?

答えて

1

アクセスはForms![TestForm]![TextBox2]と評価され、クエリデザイナからクエリを実行するときにそのテキストボックスから値を取得できます。

ただし、OpenRecordset()でクエリを開くと、このようなことは起こりません。そのような状況では、... Forms![TestForm]![TextBox2]は、他のパラメータと同様に扱われます...ので、あなたは別に、その値を指定する必要があります

Sub Retrieve() 
    Dim db As Database 
    Dim qdf As QueryDef 
    Dim rst As Recordset 
    Set db = CurrentDb 
    Set qdf = db.QueryDefs("TestQuery") 
    qdf.Parameters(0).Value = Eval(qdf.Parameters(0).Name) 
    Set rst = qdf.OpenRecordset 
    MsgBox rst!id 
End Sub 
関連する問題

 関連する問題