【问题标题】:JavaScript Either BOF or EOF is TrueJavaScript BOF 或 EOF 为真
【发布时间】:2014-05-08 09:50:35
【问题描述】:

当我从 MS 访问中检索时,我的网页上收到以下错误。

BOF 或 EOF 为 True,或当前记录已被删除。请求的操作需要当前记录

我能够通过查询检索所有记录,但认为我没有检查何时到达文件末尾。不太确定该怎么做。 这是我的 JS 代码:

var fieldcount = adoRS.Fields.Count;
if(!adoRS.bof) {
adoRS.MoveFirst();
while(!adoRS.eof) 
{
for (var y=0;y < fieldcount;y++)
{
document.write("<p>" + adoRS.fields(2).value + "| " + adoRS.fields(3).value + "| " + adoRS.fields(4).value + "| " + adoRS.fields(5).value + "| " + adoRS.fields(6).value + "| " + adoRS.fields(7).value + "| ");
adoRS.MoveNext();
    }
}
}

else { document.write("No data found for today."); };


adoRS.Close();
adoRS = null;
adoconn.Close();
adoconn = null;
}

【问题讨论】:

  • @Remou Remou,你曾经协助过,不知道能不能看看?
  • 你的意思是你可以用查询检索所有记录?针对这个数据库的其他查询是否有效,而只有这个查询失败了?在我看来,这要么是连接字符串的问题(可能将其添加到您的代码帖子中),要么是 BOF/EOF 检查。为了简单起见,尝试删除这些并尝试编写一个字段,以查看它是否正在读取数据库。在MoveFirst之后,只写一个字段“document.write(ado.fields(2).value”。如果这样写成功,那么你知道你已经连接到数据库并正在写入,但如果失败,那么有一个连接问题。
  • @James Toomey 查询工作正常。它完美地检索所有记录。但是,当页面停止加载时,我在网页的“左下角”看到一个错误。当我双击它时,我看到了 BOF 或 EOF 错误。不知道如何解决。认为它与我的语法有关。这个错误让我发疯:(请帮助

标签: javascript sql ms-access


【解决方案1】:

这是我自己想出来的。刚刚删除了 FOR 语句,它工作正常。 感谢您抽出时间查看我的问题。干杯。

【讨论】:

  • 哦,我现在明白了。 fieldcount 变量存储列数,而不是记录数。当您遍历 fieldcount 并在该循环内执行 movenext 时,您将超出记录限制。例如,如果表有 10 列但只有 3 条记录,则 for 循环将重复 10 次并尝试调用 MoveNext 10 次,移动到记录集的末尾。在这种情况下,while(!adoRS.eof) 不会保护您,因为它甚至不会到达代码块的末尾并返回到开头再次检查 EOF。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
相关资源
最近更新 更多