Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Цикл в accesse / 12 сообщений из 12, страница 1 из 1
06.07.2021, 09:38
    #40082007
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл в accesse
Нужно написать цикл который рекурсивно будет проходить по каталогу и составлять список файлов с полными путями, например в
массив.
Далее циклом побегать по массиву и каждую строчку запихивать в переменную
Набросал код но компилятор ругается на 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
06.07.2021, 15:20
    #40082138
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл в accesse
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
06.07.2021, 15:46
    #40082150
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл в accesse
...
Рейтинг: 0 / 0
06.07.2021, 16:47
    #40082172
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл в accesse
И путь надо не получать в функции, а передавать в неё как параметр - иначе какой нафиг рекурсивный проход?
...
Рейтинг: 0 / 0
06.07.2021, 18:06
    #40082186
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл в accesse
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
07.07.2021, 07:39
    #40082249
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл в accesse
court
но навсякей

Туфта там написана. При использовании FSO придётся отдельно перебирать Folder.Files и Folder.Folders, и по второму выполнять рекурсию. Но абсолютно точно так же можно поступать и с использованием Dir().
...
Рейтинг: 0 / 0
07.07.2021, 13:56
    #40082342
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл в accesse
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
07.07.2021, 14:35
    #40082350
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл в accesse
court
Только если сначала "сгрузить" все каталоги возвращаемые Dir в массив/коллекцию, и рекурсию делать обходя в цикле этот массив/коллекцию
Именно так. Но на суть-то это, по-моему, не влияет. Какая разница, итерировать по объекту или по его копии?
...
Рейтинг: 0 / 0
07.07.2021, 16:15
    #40082382
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл в accesse
А что нужно использовать чтобы удалить из строки все после символа например @ и спм символ. Например 12234@ннгггрп результат должен 12234
...
Рейтинг: 0 / 0
07.07.2021, 16:18
    #40082384
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл в accesse
Или в все от символа до символа.. например 123@_1ррррр01 результат ррррр
...
Рейтинг: 0 / 0
07.07.2021, 16:20
    #40082385
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл в accesse
Удален е символов будет в именах файлов .рандомные и по имени и по количеству символов
...
Рейтинг: 0 / 0
07.07.2021, 19:18
    #40082413
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Цикл в accesse
SAS2014
что нужно использовать чтобы удалить из строки все после символа например @ и спм символ. Например 12234@ннгггрп результат должен 12234

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


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