在记录集上做 while 循环保持 运行 而总记录少得多
Do while loop on recordset keeps running while the total records are way less
IO 在我的 asp 经典页面中遇到了一个非常奇怪的问题。我正在为员工制定休假时间表。当我测试它时,它似乎工作正常。尽管有另一种选择,我可以来回走一周,而当我往回走 3 周时,循环一直在一条记录上循环。
所以我想通过在 SQL 执行后对记录集进行计数来检查问题出在哪里。
虽然出于某种原因,do while 循环一直在循环。我在 do while 中做了一个打印计数,看看它找到了多少条记录,现在它已经在 508 000 上了!
所以在我的 t-sql 服务器 (2012) 中我做了完全相同的查询,这里它只产生了 953 条记录...
很明显,循环中出现了问题。
这是我使用的代码:
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 和 response.write RST 计数永远不会被命中,它只是不断循环使页面非常慢。
response.write SQL 结果:SELECT * FROM [qrySnipperKalender_B] WHERE [snipperdag] >= 15281 AND [snipperdag]<= 15355 ORDER BY [FunctieGroep], [Relatienaam], [Datum] ASC
当我在 SQL 服务器中 运行 这个查询时,它会产生 953 条记录(就像它应该的那样)。
所以问题是,为什么这个循环中断/保持它 运行ning?
我已经尝试用 rst.BOF 修改循环(首先我只有 EOF)但这没有任何效果。我还尝试在循环中使用 IF 条件,如果它达到 EOF 则退出循环,但这也不起作用。
您忘记在循环中rst.MoveNext
导航到下一条记录
Do while not rst.EOF
CountCheck = CountCheck + 1
response.write("Count is: " & CountCheck & "<br>")
rst.MoveNext
Loop
IO 在我的 asp 经典页面中遇到了一个非常奇怪的问题。我正在为员工制定休假时间表。当我测试它时,它似乎工作正常。尽管有另一种选择,我可以来回走一周,而当我往回走 3 周时,循环一直在一条记录上循环。
所以我想通过在 SQL 执行后对记录集进行计数来检查问题出在哪里。
虽然出于某种原因,do while 循环一直在循环。我在 do while 中做了一个打印计数,看看它找到了多少条记录,现在它已经在 508 000 上了!
所以在我的 t-sql 服务器 (2012) 中我做了完全相同的查询,这里它只产生了 953 条记录...
很明显,循环中出现了问题。
这是我使用的代码:
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 和 response.write RST 计数永远不会被命中,它只是不断循环使页面非常慢。
response.write SQL 结果:SELECT * FROM [qrySnipperKalender_B] WHERE [snipperdag] >= 15281 AND [snipperdag]<= 15355 ORDER BY [FunctieGroep], [Relatienaam], [Datum] ASC
当我在 SQL 服务器中 运行 这个查询时,它会产生 953 条记录(就像它应该的那样)。
所以问题是,为什么这个循环中断/保持它 运行ning?
我已经尝试用 rst.BOF 修改循环(首先我只有 EOF)但这没有任何效果。我还尝试在循环中使用 IF 条件,如果它达到 EOF 则退出循环,但这也不起作用。
您忘记在循环中rst.MoveNext
导航到下一条记录
Do while not rst.EOF
CountCheck = CountCheck + 1
response.write("Count is: " & CountCheck & "<br>")
rst.MoveNext
Loop