Переход на другой элемент в цикле при условии

Алексей34

Собственно бьюсь лбом об стену не могу сообразить как в цикле перейти на другой элемент в цикле
For i = 1 To rcd5.RecordCount 'Цикл по выбранным файлам в таблице, запросе
 SysCmd acSysCmdInitMeter, "Перевірка файлів обміну на дві або біш ділянок " & i & " з " & rcd5.RecordCount, rcd5.RecordCount
 n = n + 1
 If n = 100 Then
 n = 0
 DoEvents
 End If
 
 FName = rcd5![NazvaFail] 'Записываем имя файла в переменную
 flf = Dir(FName)

[color=red] If rcd5![Tip] = "xml" Then rcd5.MoveNext: Next i [/color] ' Проверка на расширение, в случае если расширение xml то переходит на другой файл
 
Do While Not flf = ""
 SysCmd acSysCmdUpdateMeter, i
 f = FreeFile
 Open FName For Input As f 'Открываем файл

 Close #f ' Закрываем файл
 flf = Dir
 
Loop
 rcd5.MoveNext
Next i
 SysCmd acSysCmdRemoveMeter
При If дает ошибку по циклу
24 ответа

Алексей34

Алексей34,
If rcd5![Tip] = "xml" Then GoTo 1 ' Проверка на расширение, в случае если расширение xml то переходит на другой файл
 
Do While Not flf = ""
 SysCmd acSysCmdUpdateMeter, i
 f = FreeFile
 Open FName For Input As f 'Открываем файл

 Close #f ' Закрываем файл
 flf = Dir
 
Loop
1:
 rcd5.MoveNext
Next i
 SysCmd acSysCmdRemoveMeter


Алексей34

Алексей34,
If rcd5![Tip] <> "xml" Then ' Проверка на расширение, в случае если расширение xml то переходит на другой файл
 
 Do While Not flf = ""
 SysCmd acSysCmdUpdateMeter, i
 f = FreeFile
 Open FName For Input As f 'Открываем файл

 Close #f ' Закрываем файл
 flf = Dir
 
 Loop
<span>End</span> <span>If</span>
 rcd5.MoveNext
Next i


Алексей34

guest_rusimport,Все равно выдает ошибку цикла ((


Алексей34

Алексей34,вместо
For i = 1 To rcd5.RecordCount 
.....
Next i
надо бы
rcd5.movefirst
Do While Not Eof(rcd5)
....
Loop


Алексей34

Алексей34,мхомувинкст - поставить перед Лууп


Алексей34

вродипатарапилсисорри


Алексей34

Алексей34,точнее
rcd5.movefirst
Do While Not rcd5.Eof
i = i + 1
....
Loop


Алексей34

Алексей34,ну и плюс моё первое исправление конечно


Алексей34

СавсемГость,Спасибо помогло


Алексей34

Алексей34,фантастика, чем у СавсемГость от моего первого варианта отличалось то? )))))


Алексей34

guest_rusimport,С Ду Лупом тяжелее метроном включить, хотя если помучатся)), и опять же в цикле надо делать пропуски фалов с расширением xml? не выходя из цикла. Правда если Фор по времени обработки проигрывает Ду Лупу то наверное переделаю на Ду Луп ))блин несуразица вышла какаето


Алексей34

guest_rusimport,Подходом к циклу отличаеться


Алексей34

guest_rusimport,Подходом к циклу отличаеться
Да еще тем что при проверке на равенство в твеем первом варианте ссылка на безусловный переход не проходила так как шло нарушение цикла Фор


Алексей34

Да еще тем что при проверке на равенство в твеем первом варианте ссылка на безусловный переход не проходила так как шло нарушение цикла Фор
это ща всё ты мне в качестве новогодней сказки рассказываешь? )))))"пить надо меньше,... меньше надо пить"©


Алексей34

Алексей34,соррино ка мне кажнтсятамциклов > 1...
с ДуИвентсом опять же - не въежалтож - учусь...)


Алексей34

Да еще тем что при проверке на равенство в твеем первом варианте ссылка на безусловный переход не проходила так как шло нарушение цикла Фор
Алексей, что ты "мэлэш" ? какой-такой "нарушение цикла Фор" ? ЧТО ЭТО ?ошибка у тебя была в том, что выполнялся переход, на след.запись рекордсетавот это
Loop
 rcd5.MoveNext
Next i
при rcd5.EOF=True (при последней итерации цикла - For i = 1 To rcd5.RecordCount )изменения If-а, уважаемых guest_rusimport и СавсемГость этот проблему - не устраняет !они убрали вот эту твою бредякуIf rcd5![Tip] = "xml" Then rcd5.MoveNext: Next iа вот ту ошибку - устраняет вот это - 13709354


Алексей34

stwom,Обрабатываю 60 тыс с хвостиком файлов из них 3/4 текстовых остальные xml


Алексей34

Алексей34,а что в поле rcd5![NazvaFail] содержится ? это имя файла ?если это имя файла, то зачем этот цикл ?
FName = rcd5![NazvaFail] 'Записываем имя файла в переменную
 flf = Dir(FName)

[color=red] If rcd5![Tip] = "xml" Then rcd5.MoveNext: Next i [/color] ' Проверка на расширение, в случае если расширение xml то переходит на другой файл
 
<span>Do</span> <span>While</span> <span>Not</span> flf = <span>""</span>
 SysCmd acSysCmdUpdateMeter, i
 f = FreeFile
 Open FName For Input As f 'Открываем файл

 Close #f ' Закрываем файл
 flf = Dir
 
<span>Loop</span>
не может быть в ФС 2-х файлов с одинаковым именем (путём/именем/расширением)


Алексей34

ошибка у тебя была в том, что выполнялся переход, на след.запись рекордсетавот это
Loop
 rcd5.MoveNext
Next i
при rcd5.EOF=True (при последней итерации цикла - For i = 1 To rcd5.RecordCount )
ага, не совсем так, номер итерации - не причём, ошибка будет если в начале цикла курсор рекордсета НЕ на первой записи


Алексей34

Алексей34,а что в поле rcd5![NazvaFail] содержится ? это имя файла ?если это имя файла, то зачем этот цикл ?не может быть в ФС 2-х файлов с одинаковым именем (путём/именем/расширением)
в поле rcd5![NazvaFail] находиться путь к файлуМодуль на стадии написания, подразумеваться чтение построчное файла текстового а xml буду с парсерить


Алексей34

ага, не совсем так, номер итерации - не причём, ошибка будет если в начале цикла курсор рекордсета НЕ на первой записи


Алексей34

ага, не совсем так, номер итерации - не причём, ошибка будет если в начале цикла курсор рекордсета НЕ на первой записи
Давало ошибку на Цикл Фор Nex without ForА на счет того что бы курсор рекордсета был на первой записи применяеться
rcd5.MoveLast
 rcd5.MoveFirst


Алексей34

в поле rcd5![NazvaFail] находиться путь к файлуМодуль на стадии написания, подразумеваться чтение построчное файла текстового а xml буду с парсерить
так не нужен цикл, файл - один, просто нужно проверить, что он, таки - есть
If rcd5![Tip] <> "xml" Then ' Проверка на расширение, в случае если расширение xml то переходит на другой файл
 FName = rcd5![NazvaFail] 'Записываем имя файла в переменную
 if Dir(FName) <> "" then
 f = FreeFile
 Open FName For Input As f 'Открываем файл

 Close #f ' Закрываем файл
 end if 
end if 
SysCmd acSysCmdUpdateMeter, i


Алексей34

так не нужен цикл, файл - один, просто нужно проверить, что он, таки - есть
If rcd5![Tip] <> "xml" Then ' Проверка на расширение, в случае если расширение xml то переходит на другой файл
 FName = rcd5![NazvaFail] 'Записываем имя файла в переменную
 if Dir(FName) <> "" then
 f = FreeFile
 Open FName For Input As f 'Открываем файл

 Close #f ' Закрываем файл
 end if 
end if 
SysCmd acSysCmdUpdateMeter, i
я говорил ранее 13709442 обрабатывается 60 тыс. с хвостиком файлов их два вида XML просто надо пропустить а в таблице на 60 тис строк находиться путь к файлам