Vbscript 指定筛选器后删除记录集中的第一行

Vbscript 指定筛选器后删除记录集中的第一行,vbscript,ado,Vbscript,Ado,我知道,我用来填充下面记录集的查询确实返回了我要查找的所有7行。但是,问题是,只要我指定了一个无论如何都应该包含该行的筛选器,第一行(PageId=1)就会被忽略 下面的ASP代码返回一个包含所有7行的表 <% response.write "<table>" & vbNewLine do while not Rs.eof response.write "<tr><td>" & Rs.Fields("que

我知道,我用来填充下面记录集的查询确实返回了我要查找的所有7行。但是,问题是,只要我指定了一个无论如何都应该包含该行的筛选器,第一行(
PageId=1
)就会被忽略

下面的ASP代码返回一个包含所有7行的表

<%
    response.write "<table>" & vbNewLine
    do while not Rs.eof
        response.write "<tr><td>" & Rs.Fields("question").Value & "</td></tr>" & vbNewLine
        Rs.MoveNext
    loop
    response.write "</table>" & vbNewLine
 %>
下面是我用来打开记录集的代码:

Set cmd = Server.CreateObject("ADODB.Command")
DIM Rs
SET Rs = Server.CreateObject("ADODB.recordset")
cmd.ActiveConnection = conn
cmd.CommandText = "sp_getQuestions"
cmd.CommandType = 4
cmd.Parameters.Refresh
cmd.Parameters("@qID") = 545
Set Rs = cmd.Execute
Set cmd=nothing

对于普通记录集,您可以在之前和之后使用Rs.RecordCount,以确保获得相同数量的结果。您还可以使用Rs.AbsolutePosition(基于1)确保您仍在第一条记录上。当我对RS的起始位置有疑问或问题时,我会使用RS.MoveFirst确保它位于起始位置

对于存储过程,可以考虑使用UnBand(+ 1)来计算…在结果数组中循环以显示:

If NOT rs.EOF Then
    arrResultSet = rs.GetRows()
    arrRowCount = UBound(arrResultSet,2)
End If
我没有使用过这种方法,但是看起来你可以保证得到更真实的结果


希望这有帮助。

Rs.RecordCount在设置过滤器之前和之后总是返回-1。那里有数据,所以我不知道为什么返回-1
AbsolutePosition
MoveFirst
在这种情况下也不会执行任何操作。请提供用于打开记录集的代码。当存在返回记录的有效RS时,RS返回-1是不正常的行为。好的,刚才添加到主帖子中。光标位置是什么?客户端游标可能会提高这些工作的可能性,但也会给Web服务器(vs SQL Server)带来额外负担:rs.CursorLocation=aduseclient出于某种原因不允许我更改它。即使尝试将其更改为AdusClient,当我检查其值时,它仍将返回“2”(AdusServer)。2个问题:1。什么是
Rs.Fields(“PageId”)。类型
?2.您说“第一行现在为空”…这是指“”标记在那里,但没有内容,还是整行没有打印出来?
If NOT rs.EOF Then
    arrResultSet = rs.GetRows()
    arrRowCount = UBound(arrResultSet,2)
End If