2015-04-13 2 views
0

Этот цикл должен быть циклическим путем, и когда он достигает конца, он должен выйти из цикла. Кажется, он застрял и не вышел. Я использовал почти идентичный цикл в другом макросе, так почему же он не работает здесь?Кажется, что бесконечный цикл

If not rs2.eof Then 
     rs2.movefirst 
     Do until rs2.eof 

      Set ORDERLINE = ORDERLINES(CInt(rs2("ROW"))-1).VALUE 

      If ORDERLINE("udfStringCol8") = trim(group) Then 
       For i = 0 to (Lcnt - 1) 
        Set ORDERLINE = ORDERLINES(i).VALUE 
        objExcel.Cells(i+2, 1).Value = ORDERLINE("PART_ID") 
        objExcel.Cells(i+2, 2).Value = ORDERLINE("DESCRIPTION") 
        objExcel.Cells(i+2, 3).Value = ORDERLINE("USER_3") 
        objExcel.Cells(i+2, 4).Value = ORDERLINE("USER_6") 
        objExcel.Cells(i+2, 5).Value = ORDERLINE("USER_8") 
        objExcel.Cells(i+2, 6).Value = ORDERLINE("USER_7") 
        rs2.movenext 
       Next  
      End If 
     loop 
    End If 
    rs2.close 
+2

Я думаю, что rs2 никогда не поражает EOF. Ваш 'movenext()' может не выполняться достаточно много раз. Похоже, что 'movenext()' не должен жить внутри 'if..end if' и' for..next'. –

+2

Да. Не продвигайте свой набор записей с помощью 'rs2.movenext' внутри вашего цикла' for'. 'rs2.movenext' должен быть непосредственно перед вашей строкой' loop'. Это продвигает курсор вашего набора записей к следующей записи. Вы хотите сделать это один раз внутри цикла while. Кроме того, как указывает @LynnCrumbling, ваш набор записей никогда не попадает в 'EOF', который предполагает, что ваш оператор' IF' всегда возвращает 'false'. – JNevill

ответ

0
Do until rs2.eof 
     If ORDERLINE("udfStringCol8") = trim(group) Then ' this doesn't happen 
     'some code here 
      rs2.movenext ' So this doesn't move next 
     End If 
    loop 
Смежные вопросы