admin

经典ASP做while循环显示错误

sql

我有一个带有简单html表的经典ASP页面,并且我想基于从数据库中提取的未知数量的记录来循环表行,但是,当我使用do /
while循环来循环记录时,一个错误,指出BOF或EOF为True。我希望表格的其他每一行都可以替代背景颜色(我在CSS中设置的颜色)。

<% do while not rsTest.eof %>
<tr class="odd">
<td colspan="5"><%=(rsTest.Fields.Item("field").Value)%></td>
</tr>

<% rsTest.moveNext
if not rsTest.eof then 
count = count + 1 %>
<tr class="even">
<td colspan="5"><%=(rsTest.Fields.Item("field").Value)%></td>
</tr>
<% end if %>

<% count = count + 1 
rsTest.moveNext 
loop %>

根据浏览器,该错误发生在循环之前的最后一个“
rsRoster.moveNext”上。如果从数据库中提取的记录数为偶数,则循环不会出错,但是如果要提取的记录数为奇数,则该循环会出错。我尝试插入一些“如果EOF,则什么都不做,否则执行代码”,但是当我这样做时,检查EOF的代码似乎只是被忽略了。任何建议,将不胜感激。


阅读 213

收藏
2021-06-07

共1个答案

admin

我知道我对此不满意,但请尝试以下操作:

<% 
  Dim oddFlag
  oddFlag = 1
  do while not rsTest.eof 
  if oddFlag=1 Then 
    oddFlag=0
    Response.write("<tr class='odd'>")
    Response.write("<td colspan='5'>")
    Response.write(rsTest.Fields.Item("field").Value)
    Response.write("</td></tr>")
  else 
    oddFlag=1 
    Response.write("<tr class='even'>")
    Response.write("<td colspan='5'>")
    Response.write(rsTest.Fields.Item("field").Value)
    Response.write("</td></tr>")
  end if
  rsTest.moveNext 
 loop 
%>
2021-06-07