【问题标题】:ADO Recordset eof is always true even though there is dataADO Recordset eof 始终为真,即使有数据
【发布时间】:2014-06-27 15:20:58
【问题描述】:

下面是一段代码,它运行一个存储过程并返回 1 行。

如果我运行下面的代码,在某些情况下 EOF 会返回 true,即使我知道有数据。有时它可以正常工作,有时却不能。

set objConn = server.createobject("ADODB.Connection")
objConn.open funcReadIntranetConnection
set rs = objConn.execute(strSql)


if not rs.eof then

else

end if

我连续两次运行这些代码,不确定是否相关,但我每次都重新创建所有连接等。

任何建议将不胜感激。

【问题讨论】:

  • 您是否在任何地方指定On Error Resume Next?它可能会通过任何错误,甚至通过您的If 测试。
  • “有时可以正常工作,有时不能正常工作”——除了你之外没有其他人能够确定成功和失败的条件。
  • 你甚至没有指定你的strSql包含什么,那么我们怎么知道它是否会返回一个开放的结果集呢?

标签: vbscript asp-classic ado


【解决方案1】:

我建议:

Do while not rs.eof
'your code here
Loop

【讨论】:

  • 我会使用Do Until rs.eof,因为它更接近自然语言。
  • 这个答案或上面的评论都没有解决这个问题。问题是 SQL 是否返回有效的结果集,OP 已经知道如何检查 EOF。你怎么知道他们不想使用GetRows() 输出到数组?在这种情况下,If 是完全有效的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-14
  • 1970-01-01
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多