2016-04-28 2 views
-1

Ich habe eine Tabelle TEST_TABLE Titel wieZugang - Abfrage funktioniert gut, wenn manuell ausgeführt, aber ein Re-Cord nicht erstellen kann mit ihm

ID   Code 
    -----  ------- 
    1    A 
    2    B 
    3    C 

ich geschaffen habe eine einfache Form Testform den Titel dynamisch Datensätze abrufen aus der Tabelle . Schalungselement Frage ist eine Textbox und TextBox2 namens

ich die folgende Abfrage erstellt und es TestQuery genannt Datensätze aus TEST_TABLE abzurufen mit vom Benutzer eingegebenen Wert in TextBox2:

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

Die Abfrage funktioniert gut, wenn ich es manuell ausführe.

ich folgende Unterprozedur erstellt die Abfrageergebnisse in einem Re-Cord wie abrufen -

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 

Aber wenn ich diese Unterprozedur ausführen versuchen, erhalte ich Fehler einen Fehler, der besagt "Laufzeit 3061 - Zu wenige Parameter. Erwarten Sie 1 '.

Fehle ich hier etwas? Oder gibt es einen besseren Weg?

Antwort

1

Access kann Forms![TestForm]![TextBox2] auswerten und den Wert aus diesem Textfeld abrufen, wenn Sie die Abfrage vom Abfrage-Designer ausführen.

Dies geschieht jedoch nicht, wenn Sie die Abfrage mit OpenRecordset() öffnen. In dieser Situation ist, Forms![TestForm]![TextBox2] wie jeder andere Parameter behandelt ... so müssen Sie seinen Wert separat liefern ...

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 
Verwandte Themen