2016-04-08 22 views
0

Ich habe einen DAO-Cord wieWie Werte aus einem DAO-Recordset dynamisch abgerufen werden?

Set rst = CurrentDb.OpenRecordset("Select * from EMPLOYEES") 

Die Datensatz hat folgende Felder - Namen, Alter, GEHALT, TITEL

Jetzt habe ich ein Array mit einer bestimmten Liste von Feldern erstellt -

 Dim Fields As Variant 
    Fields = Array("NAME", "SALARY") 

Und wollen Sie die Felder aus dem Re-Cord

 rst.MoveNext 

    MsgBox(rst![Array(0)]) 
unter Verwendung der Array-Elemente dynamisch abrufen

Ich erhalte eine Fehlermeldung, dass 'Artikel nicht in der Sammlung gefunden wurde'.

Ich weiß, was ich hier fehlt ist die richtige Weise, die Variable für den Feldnamen nach dem Ausrufezeichen ('!') Zu übergeben, aber ich kann nicht herausfinden, wie. Kann jemand helfen?

+0

Versuchen 'rst.Fields (Fields (0)) value' und iirc können Sie ordinals verwenden so besser.' Rst.Fields (0). Wert' –

+0

Danke! Es klappt! –

Antwort

2
rst!FieldName 

Das Syntax für den folgenden wirklich Syntax Zucker ist:

rst.Fields("FieldName").Value 

Mit anderen Worten, durch das Schreiben rst![Array(0)], sind Sie für ein Feld suchen, [Array(0)] benannt ist - der Teil nach dem Ausrufezeichen ist wörtlich genommen.

Nutzen Sie einfach die Low-Zucker-Syntax statt :-)

rst.Fields(Fields(0)).Value 

Beachten Sie, dass Array nicht der Name Ihres Array-Variable ist, so [Array(0)] bezieht sich nicht auf Fields(0) wie Sie wahrscheinlich dachte, es würde (und Array(0) würde ein neues Array von Werten erstellen, die den Wert 0 enthalten). Wenn der Name Fields verwirrend ist, versuchen Sie dies:

Dim fieldList As Variant 
fieldList = Array("NAME", "SALARY") 

... 

MsgBox rst.Fields(fieldList(0)).Value 
+0

Vielen Dank. –

0
rst.Fields(Fields(0)) or rst.Fields(Array(0)) 
Verwandte Themen