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
Я думаю, что rs2 никогда не поражает EOF. Ваш 'movenext()' может не выполняться достаточно много раз. Похоже, что 'movenext()' не должен жить внутри 'if..end if' и' for..next'. –
Да. Не продвигайте свой набор записей с помощью 'rs2.movenext' внутри вашего цикла' for'. 'rs2.movenext' должен быть непосредственно перед вашей строкой' loop'. Это продвигает курсор вашего набора записей к следующей записи. Вы хотите сделать это один раз внутри цикла while. Кроме того, как указывает @LynnCrumbling, ваш набор записей никогда не попадает в 'EOF', который предполагает, что ваш оператор' IF' всегда возвращает 'false'. – JNevill