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 时停止。
我正在使用 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 时停止。