2016-04-08 25 views
0

Bir DAO recordset sahip gibiBir DAO kayıt kümesinden dinamik olarak nasıl değerler alınır?

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

kayıt kümesi aşağıdaki alanları var - isim, yaş, MAAŞ, TITLE

Şimdi alanları belirli listesi ile bir dizi oluşturduk -

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

Ve dinamik dizi öğelerini

 rst.MoveNext 

    MsgBox(rst![Array(0)]) 
kullanarak kayıt kümesinden alanları almak istiyorum

'Koleksiyonda öğe bulunmadı' şeklinde bir hata alıyorum.

Burada nelerin eksik olduğumu biliyorum, ünlem işareti ('!') Işaretinden sonra Alan Adının değişkenini iletmenin doğru yolu olduğunu ancak nasıl olduğunu anlayamıyorum. Biri yardım edebilir mi? sözdizimi aşağıdaki için gerçekten sözdizimi şeker Yani

+0

'rst.Fields (Fields (0)) value' deneyin ve iirc bunu daha iyi sıra sayılarını kullanabilirsiniz:: adı Fields kafa karıştırıcı ise, bu deneyin' rst.Fields (0). değer ' –

+0

Teşekkürler! İşe yarıyor! –

cevap

2
rst!FieldName 

: Başka bir deyişle

rst.Fields("FieldName").Value 

, rst![Array(0)] yazarak, sen [Array(0)] adını taşıyordu bir alan arıyoruz - parçasını ünlem işareti sonra kelimenin tam anlamıyla alınır. muhtemelen bunu düşündüm olarak

Basitçe (böylece [Array(0)]Fields(0) atıfta değildir, Array senin dizi değişkenin adı değil bunun yerine

rst.Fields(Fields(0)).Value 

Not :-) düşük şeker sözdizimini kullanın ve Array(0), 0 değerini içeren yeni bir değerler dizisi oluşturacaktır. .

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

... 

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

Çok teşekkür ederim. –

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