2015-07-10 58 views
0

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

你沒有做任何事情,以推進到一個新的記錄。 –

回答

4

你忘了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