在DAO.RecordSet中访问结果

时间:2011-07-13 07:46:17

标签: sql ms-access

我正在使用此SQL查询

SELECT TOP 11 StockPrices.Close FROM StockPrices WHERE StockPrices.Date >=#2009-03-23# AND StockPrices.ID=1 ORDER by StockPrices.Date;

在VBA中获取并存储数据并保存在记录集中

SQLQuery = "SELECT TOP 11 StockPrices.Close FROM StockPrices WHERE StockPrices.Date >=#" & tempDate & "# AND StockPrices.ID=" & tempId & " ORDER by StockPrices.Date;"
Set rst2 = db.OpenRecordset(SQLQuery)
Pd = rst2.Fields(0)
Pd1 = rst2.Fields(1)
Pd5 = rst2.Fields(5)
Pd11 = rst2.Fields(10)
rst2.Close

虽然正在完美地查询Pd,但我无法访问其余数据。据我所知,这里只有一个字段,即Close,它将作为Fields(0)出现,我想访问同一字段中的其他数据..

让我举个例子,上面SQL查询的查询结果就像这样

3940
2544
5544
5633
1257
9855
3267
3141
2731
6931

所以我想要listm中的第一个,第二个,第五个和第十个数据,它们应该存储在Pd,Pd1,Pd5和Pd11中。

任何帮助,如何做到这一点?

Soham

2 个答案:

答案 0 :(得分:1)

使用Pd1 = rst2.Fields(1)您正在访问当前行的第二列。 如果要访问第二行,则需要使用rst2.MoveNext。 下面的代码会将所有结果保存到results()数组中。 您可以使用results(4)访问第五个结果。

Dim i as Integer
Dim results(11) as Integer
i = 0
Do while Not rst2.EOF
    results(i) = rs2.fields(0)
    i = i + 1
    rst2.MoveNext
Loop

要移动多个步骤,您可以使用rst2.Move 4,即移动四个步骤。 最好的方法是只获得你需要的行(1,5和11)。

答案 1 :(得分:0)

我对Access并不熟悉,但您是否尝试将输出存储到数组中,然后引用数组值?

干杯, Visakh