当记录集上的循环继续运行而记录总数减少时

问题描述:

IO在我的asp经典页面中出现了一个真正奇怪的问题。我正在为员工制定一个休息日程表。当我测试它时,它似乎工作正常。尽管有了另外一种选择,我可以一周来回回顾,当我回到3周时,循环不断循环到一个单独的记录中。当记录集上的循环继续运行而记录总数减少时

所以我想通过在SQL执行后对记录集进行计数来检查问题出在哪里。

由于某些原因,do while循环保持循环。我做了一个打印计数,看看它找到了多少条记录,现在它已经在508 000!

所以在我的T-SQL服务器(2012年),我做了完全相同的查询,在这里它只是导致953个记录...

所以很明显tghere去一些错误的循环。

这里是我使用的代码:

strSQL = "SELECT * FROM [qrySnipperKalender_B] WHERE [snipperdag] >= "& szStart &" AND [snipperdag]<= "& szEnd &" ORDER BY [FunctieGroep], [Relatienaam], [Datum] ASC" 


    response.write(strSQL & "<br> <br>") 

    set rst=con_sql.execute(strSQL) 
    CountCheck = 0 


    Do until rst.EOF or rst.BOF 
     response.write("Count is: " & CountCheck & "<br>") 

     CountCheck = CountCheck + 1 
    Loop 

    response.write("RST count  :" & CountCheck) 
    response.end 

到Response.End的和回复于RST数从来没有击中,它只是不断循环,使页面非常慢。

的回复于SQL结果:SELECT * FROM [qrySnipperKalender_B] WHERE [snipperdag] >= 15281 AND [snipperdag]<= 15355 ORDER BY [FunctieGroep], [Relatienaam], [Datum] ASC

当我运行在它导致953个记录(如它应该)在SQL服务器此查询。

所以问题是,为什么这个循环打破/保持运行?

我已经试图用rst.BOF修改循环(首先我只有EOF),但这没有任何作用。我也尝试在循环中使用IF条件,如果它碰到EOF,则退出循环,但这也不起作用。

+1

你没有做任何事情,以推进到一个新的记录。 –

你忘了rst.MoveNext内环路导航到下一个记录

Do while not rst.EOF 
    CountCheck = CountCheck + 1 
    response.write("Count is: " & CountCheck & "<br>") 
    rst.MoveNext 
Loop 
+0

我是多么的愚蠢,我错过了:/对不起,下次我会尝试更好一点:)谢谢! – Nicolas

+0

像这样在SO上没有回答过。使用记录集101。 – Lankymart