【问题标题】:Classic ASP Do while Loop only shows the last record经典 ASP Do while Loop 只显示最后一条记录
【发布时间】:2016-08-16 14:15:51
【问题描述】:

我有一个包含 3 条记录的记录集。我在经典 ASP 中使用 DO While 循环来显示所有记录,但下面的代码仅显示记录集中的最后一条记录。

<%Do While Not RS.EOF%>
  <div><%=RS.Fields("ID").value%></div>                 
  <div><%=RS.Fields("Title").value%></div>
  <div><%=RS.Fields("Description").value%></div>
    <%RS.MoveNext()
Loop%>

谁能告诉我为什么会这样?是我填写记录集的方式吗?

我确定它包含 3 条记录,因为 RS.RecordCount 返回 3。

这是我用来创建虚拟记录集并用数据填充的代码:

With RS.Fields
  .Append "ID", adBSTR
  .Append "Title", adBSTR
  .Append "Description", adBSTR
End With
With RS
  .AddNew
  .Fields("ID")="1111"
  .Fields("Title") = "Test1"
  .Fields("Description") = "Test Description 1"
  .Update
End With

With RS
  .AddNew
  .Fields("ID")="2222"
  .Fields("Title") = "Test2"
  .Fields("Description") = "Test Description 2"
  .Update
End With

With RS
  .AddNew
  .Fields("ID")="3333"
  .Fields("Title") = "Test3"
  .Fields("Description") = "Test Description 3"
  .Update
End With

【问题讨论】:

  • 在用相应的数据元素填充其单元格之前,您是否正确地前进到下一行?
  • 代码已发布。我是吗?

标签: asp-classic


【解决方案1】:

来自AddNew Method (ADO)

调用AddNew方法后,新记录成为当前记录 调用 Update 方法后记录并保持最新状态。 自从 新记录被附加到记录集,随后调用 MoveNext 更新将移过记录集的末尾,使 EOF 为真。

这就是它发生的原因。

当您需要在添加新记录后列出一个记录集的所有记录时,您需要确保光标位于开头。

为此,请在循环 Do While Not RS.EOF 开始之前调用 MoveFirst (RS.MoveFirst)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多