Sql 访问DAO.RecordSet中的结果

Sql 访问DAO.RecordSet中的结果,sql,ms-access,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 StockPrice

我正在使用这个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的查询非常完美,但我无法访问其余的数据。据我所知,这里只有一个字段,即关闭字段,即字段0,我想访问同一字段中的其他数据

让我举一个例子,上面SQL查询的查询结果如下

3940
2544
5544
5633
1257
9855
3267
3141
2731
6931
所以我想要列表中的第一个、第二个、第五个和第十个数据,它们应该存储在Pd、Pd1、Pd5和Pd11中

有什么帮助吗,怎么做


Soham

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

干杯, Visakh

使用Pd1=rst2.Fields1访问当前行的第二列。 如果要访问第二行,需要使用rst2.MoveNext。 下面的代码将所有结果保存到结果数组中。 您可以使用results4访问第五个结果

要移动多个步骤,可以使用rst2.move 4,即移动四个步骤。
最好的方法是只获取所需的行1、5和11。

因此,要转到5行,我必须添加Movenext 4次?多么糟糕的一种方式你在用变量pd,pd等做什么。?在我看来,您似乎是通过记录集填充控件,而应该使用窗体并将SQL SELECT指定为其记录源。仅使用它们来计算VBAW中的另外三个变量为什么不能直接进行计算?坦白地说,整个事情在我看来是不连贯的——我不明白为什么你只想从你的前11名列表中选择一些值。这看起来像是一个任意的选择,特别是当你对这些数字进行某种计算时。另外,您是否考虑到Jet/ACE SQL中的TOP N返回的是平局,因此它可能返回12条或更多记录?@David,因为我只想在接下来的11天内结束价格,为什么不将记录加载到表单中呢?为什么要使用记录集呢?
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