powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Цикл в accesse
12 сообщений из 12, страница 1 из 1
Цикл в accesse
    #40082007
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно написать цикл который рекурсивно будет проходить по каталогу и составлять список файлов с полными путями, например в
массив.
Далее циклом побегать по массиву и каждую строчку запихивать в переменную
Набросал код но компилятор ругается на fil

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 Dim fil() As String
   
   myPath = path_import.Value
   fil = Dir(myPath)
 
   For Each myFile In fil

	вывести  значение myFile

  Next




и что нужно еще прописать чтобы закончить цикл или next достаточно?

Модератор: Тема перенесена из форума "WinForms, .Net Framework".
...
Рейтинг: 0 / 0
Цикл в accesse
    #40082138
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fil(i) - обращение к элементу массива
цикл For each ИМХО не катит тут
Код: vbnet
1.
2.
3.
For i =.... to ....

next i

или
Код: vbnet
1.
2.
3.
4.
Do until fil(i)=""

          i=1+1
loop


dir возвращает string.... один string! Его нельзя присвоить всему массиву, можно только элементу массива
...
Рейтинг: 0 / 0
Цикл в accesse
    #40082150
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Цикл в accesse
    #40082172
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И путь надо не получать в функции, а передавать в неё как параметр - иначе какой нафиг рекурсивный проход?
...
Рейтинг: 0 / 0
Цикл в accesse
    #40082186
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014
Нужно написать цикл который рекурсивно будет проходить по каталогу и составлять список файлов с полными путями, например в
массив.
понятно, что ТС "ляпает" слова не особо озабочиваясь их смыслом, но навсякей :
авторNote: If you want to get the names of all the files in the main folder and the sub-folders, you can’t use the DIR function (as it’s not recursive). To do this, you can either use Power Query (no coding needed) or use the File System Object in VBA (with recursion) .
...
Рейтинг: 0 / 0
Цикл в accesse
    #40082249
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
но навсякей

Туфта там написана. При использовании FSO придётся отдельно перебирать Folder.Files и Folder.Folders, и по второму выполнять рекурсию. Но абсолютно точно так же можно поступать и с использованием Dir().
...
Рейтинг: 0 / 0
Цикл в accesse
    #40082342
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
court
но навсякей

Туфта там написана. При использовании FSO придётся отдельно перебирать Folder.Files и Folder.Folders, и по второму выполнять рекурсию. Но абсолютно точно так же можно поступать и с использованием Dir().

Да, - "придётся отдельно перебирать Folder.Files и Folder.Folders"
Но дальше, с Folders - это можно сделать через рекурсию
Что-то типа
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
sub fso_rec(path)
  for each f in fld.Files
    debug.print f.name
  next
  '
  for each f in fld.Folders
    fso_rec(f.path)
  next
end sub



А с Dir - это в принципе не возможно.
Dir "не запоминает" своё состояние на предыдущем уровне рекурсии
Только если сначала "сгрузить" все каталоги возвращаемые Dir в массив/коллекцию, и рекурсию делать обходя в цикле этот массив/коллекцию
...
Рейтинг: 0 / 0
Цикл в accesse
    #40082350
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
Только если сначала "сгрузить" все каталоги возвращаемые Dir в массив/коллекцию, и рекурсию делать обходя в цикле этот массив/коллекцию
Именно так. Но на суть-то это, по-моему, не влияет. Какая разница, итерировать по объекту или по его копии?
...
Рейтинг: 0 / 0
Цикл в accesse
    #40082382
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что нужно использовать чтобы удалить из строки все после символа например @ и спм символ. Например 12234@ннгггрп результат должен 12234
...
Рейтинг: 0 / 0
Цикл в accesse
    #40082384
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или в все от символа до символа.. например 123@_1ррррр01 результат ррррр
...
Рейтинг: 0 / 0
Цикл в accesse
    #40082385
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удален е символов будет в именах файлов .рандомные и по имени и по количеству символов
...
Рейтинг: 0 / 0
Цикл в accesse
    #40082413
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS2014
что нужно использовать чтобы удалить из строки все после символа например @ и спм символ. Например 12234@ннгггрп результат должен 12234

Код: vbnet
1.
Split("12234@ннгггрп", "@")(0)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Цикл в accesse
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]