ASP ADO recordset.NextRecordset() 在没有下一个记录集时中断

ASP ADO recordset.NextRecordset() breaks when there is no next recordset

我正在使用 Javascript 在 ASP 中编写脚本,我需要遍历不确定数量的记录和记录集。我可以毫无问题地遍历各个记录。当我需要遍历记录集时,问题就出现了。只要有另一个记录集,它就可以正常工作。如果没有更多的记录集,代码就会终止,而且似乎没有办法检查或捕获错误。我已经完成了 try/catch 块和我能想到的每项测试,但代码只是中断并给出了内部服务器错误。我希望我缺少 isNextRecordset()isLastRecordset() 函数。

我的当前代码

do{
    //Some Code Stuff

    record = record.NextRecordset();  //Dies here when no more recordsets

}while(!!record);

使用普通的 VBScript,他们显示此方法有效(尽管从未尝试过)。但我不想使用 VBScript。

VBScript 代码

Do Until record = Nothing

   set record = record.NextRecordset
Loop

编辑: 我相信我通过添加循环使事情变得混乱,如果您删除循环并在没有下一个记录集时只调用 nextrecordset 一次,它仍然会死掉。无需测试 null。我的代码没有通过 null 测试。

//Get A recordset
//There is only one recordset
record = cmd.Execute();

//Do some stuff with the record set

//Call NextRecordset
//even though there are no more
record = record.NextRecordset();  //<--- Still Dies right here 

编辑: 只是想指出我遇到的隐藏问题。下面的答案是正确的,但不是我的实际问题。我看到的一些教程显示了如下结构。关闭记录和连接。但是当 record 触底时,它已经是 null,这是一个问题。这很容易通过显示正确的错误消息来解决,而我没有。我自己的愚蠢,但可能会帮助别人。

try{

   //Do Some Stuff

   record = record.NextRecordset();

   //Test Record set  

}catch(e){

}finally{
    record.Close();  <---- This is where it was actually having a problem. 
    record = null;
    myconn.Close();
    myconn = null;
}

正确的语法是:

while (record) {
    //Some Code Stuff

    record = record.NextRecordset();
}

这样循环会在 NextRecordset() 将 return 为 null 时停止。