С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
393 / 137 / 37
Регистрация: 16.03.2013
Сообщений: 1,497
1

Поиск файла в сетевой директории командой из формы

18.08.2017, 10:27. Показов 6482. Ответов 65
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день всем!
Подскажите пожалуйста, можно ли выполнить поиск файла с заданным названием, который находится в сетевой папке предприятия и используется для работы производственными подразделениями.

Вкратце для чего.
--Имеем некий справочник, редактируемый и дополняемый конструкторским бюро.
--Справочник выполнен в виде таблицы, как в примере.
--В оригинале разумеется данных больше, но они как бы имеют второстепенное значение в данном вопросе.
--На данный момент, если производятся какие то изменения в КД, то конструктор должен лезть в "дебри сети" , зайти в папку производственного подразделения и там отыскать файл, чтобы отметить его некой меткой, дабы его брали в работу только после просмотра и необходимой коррекции.

На сетевом диске М:\ у каждого из подразделений имеется своя папка например П1;П2 и П3., то есть путь к папкам получается такой :М:\П1 или М:\П2 или М:\П2.

Возможно ли автоматизировать поиск нужного файла в нужной директории по команде из формы.
В примере вобщем-то интуитивно понятно в чем суть вопроса.
Сложность в том еще, что в папках П1, П2 и П3 имеется несколько десятков подпапок, нужно чтобы в них поиск тоже производился.Вот.

Буду очень признателен за живой пример. Спасибо.
Вложения
Тип файла: 7z ПримерПоиск.7z (24.4 Кб, 10 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.08.2017, 10:27
Ответы с готовыми решениями:

Поиск файла в директории
Вот у меня есть две кнопки с такими кодами: java7 if (System.IO.File.Exists("C:\\Program...

Поиск файла в конкретной директории
Добрый день. Просьба подсказать, каким образом можно проверить наличие/отсутствие файла в...

Поиск файла в директории и всех вложенных подкаталогах
Как сделать поиск одного файла по имени в директории и поддиректориях и последуещее отображение в...

Поиск по сигнатуре заданного файла в указанной директории
Помогите пожалуйста с задачкой... Поиск по сигнатуре заданного файла в указанной директории....

65
Модератор
Эксперт MS Access
12106 / 4966 / 791
Регистрация: 07.08.2010
Сообщений: 14,591
Записей в блоге: 4
22.08.2017, 13:25 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Braser Посмотреть сообщение
все загадками говорите...
спросонок ответила не на тот вопрос
Dim LResult As String, path, i, s, newname
path = Array("L:\cam_mtp", "L:\cam_mtp2", "L:\cam_mtp3")

''''
'Ищем в подпапках
dim str_path as string
str_path=path(i) '''перезапоминание , чтобы подстроиться под функцию
s = s & FindSubFolder(str_path, Me.Деталь)

Public Function FindSubFolder(fold As String, file)
1
393 / 137 / 37
Регистрация: 16.03.2013
Сообщений: 1,497
22.08.2017, 16:55  [ТС] 22
Стоит иногда давать себе отдохнуть

Добавлено через 1 час 12 минут
ФУУУххх. чето засада какая то, даже не знаю чего делать, не хочет он в подпапках искать...моск уже стер. Ищет только на 1 уровне и все...

Добавлено через 2 минуты
Люди нарисуйте в пример пожалуйста, где чего должно быть, чтобы я разобрался чего не так где прописал-вставил, пожалуйста, ЖИЗНЕННО важно. Еще в основную базу потом адаптировать нужно будет ентот поиск.
0
Модератор
Эксперт MS Access
12106 / 4966 / 791
Регистрация: 07.08.2010
Сообщений: 14,591
Записей в блоге: 4
22.08.2017, 17:02 23
Цитата Сообщение от Braser Посмотреть сообщение
Ищет только на 1 уровне и все...
нужны права доступа к папкам/подпапкам
далеко не ко всем я имела доступ(что мне были надо по задаче), периодически писала заявку админам на подключение себя или опорных пользователей в папкам

DIR не работал
создала оглавление через аксесс(я создавала отчеты в НТМ-формате и записывала в определенное место на сервере)
1
393 / 137 / 37
Регистрация: 16.03.2013
Сообщений: 1,497
22.08.2017, 17:09  [ТС] 24
На данный момент на кнопке вот что, не хотит во вложенных искать, хоть убейся
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Private Sub Кнопка11_Click()
    Dim LResult As String, path, i, s, newname
    path = Array("L:\KDBANK\PLAZMA", "L:\KDBANK\PARTDIR", "L:\KDBANK\ZAGOTOVKA")
    For i = 0 To UBound(path)
        LResult = Dir(path(i) & "" & Me.Деталь & ".*")
        If LResult <> "" Then
            s = s & "Файл найден в папке " & path(i) & vbCrLf
            newname = InputBox("Новое имя файла " & Me.Деталь, , LResult)
            If newname <> "" And newname <> path(i) & "" & LResult Then
                Name path(i) & "" & LResult As path(i) & "" & newname
            End If
       End If
       
       'ищем в подпапках
       Dim str_path As String
       str_path = path(i) '''Перезапоминание чтобы подстроится под функцию
       s = s & FindSubFolder(str_path, Me.Деталь)
        Next
    If s = "" Then
        MsgBox "Файл не найден в указанных папках"
    End If
End Sub
 
Public Function FindSubFolder(fold As Variant, file)
    Dim fso As Object, folder As Object, subfold As Object
    Dim s, c, i, newname
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(fold)
    c = folder.SubFolders.Count
    For Each subfold In folder.SubFolders
        If fso.FileExists(subfold & "" & file) Then
            newname = InputBox("новое имя файла " & file, , subfold & "" & file)
            If newname <> "" And newname <> subfold & "" & file Then
                Name subfold & "" & file As newname
            End If
            FindSubFolder = FindSubFolder & newname
        End If
    Next
End Function
Добавлено через 1 минуту
Здесь с доступом все норм. Это сетевая папка нашего подразделения, где обменники и проч., поэтому вроде как с правами не должно быть каких то проблем
0
Модератор
Эксперт MS Access
12106 / 4966 / 791
Регистрация: 07.08.2010
Сообщений: 14,591
Записей в блоге: 4
22.08.2017, 19:02 25
почти час искала слеши и прочее
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''заменила все слеши на обратные, чтобы на форуме корректно показывало
'''''''''''''''в приложении ---нак положено, левые
'''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Кнопка11_Click()
    Dim LResult As String, path, i, s, newname
    path = Array("L:/KDBANK/PLAZMA", "L:/KDBANK/PARTDIR", "L:/KDBANK/ZAGOTOVKA")
    path = Array("c:/temp", "c:/rabc", "c:/888")
    For i = 0 To UBound(path)
    Debug.Print i, path(i); "=========="
    Dim sd
    
    ''для отладки
    ''sd = Me.Деталь
    sd = "ww222"
    
        LResult = Dir(path(i) & "/" & sd & ".*")
        If LResult <> "" Then
        Debug.Print i, path(i); "/"; LResult
            s = s & "Файл найден в папке " & path(i) & vbCrLf
    ''для отладки
            'newname = InputBox("Новое имя файла " & sd, , LResult)
            newname = LResult & "1"
            
            Debug.Print "новое имя ", newname
            If newname <> "" And newname <> path(i) & "/" & LResult Then
                Name path(i) & "/" & LResult As path(i) & "/" & newname
            End If
       End If
       
       'ищем в подпапках
       Dim str_path As String
       str_path = path(i) '''Перезапоминание чтобы подстроится под функцию
       s = s & FindSubFolder(str_path, sd)
        Next
    If s = "" Then
        MsgBox "Файл не найден в указанных папках"
    End If
End Sub
 
Public Function FindSubFolder(fold As Variant, file)
    Dim fso As Object, folder As Object, subfold As Object
    Dim objfiles As Object
    Dim s, c, i, newname, sf
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(fold)
    ''Debug.Print folder.Name, "============"
    c = folder.SubFolders.Count
    For Each subfold In folder.SubFolders
    Debug.Print subfold.Name, "---"
    ''If fso.FileExists(subfold & "/" & file & "*.*") = True Then
    For Each objfile In subfold.Files
    sf = objfile.Name
    If sf Like file & "*.*" Then
        Debug.Print sf
    ''для отладки
            ''newname = InputBox("новое имя файла " & file, , subfold & "/" & file)
            newname = subfold & "/" & sf & "2"
           
            
            If newname <> "" And newname <> subfold & "/" & file Then
            Debug.Print "новое имя ", newname
                Name subfold & "/" & sf As newname
            End If
            FindSubFolder = FindSubFolder & newname
        End If
    Next objfile
''    End If
    Next
End Function
Вложения
Тип файла: zip search_file.zip (1.0 Кб, 13 просмотров)
2
9112 / 6044 / 590
Регистрация: 27.03.2013
Сообщений: 19,858
22.08.2017, 19:11 26
Цитата Сообщение от Braser Посмотреть сообщение
...все загадками говорите...
Аналогично считаю.
А вот если бы для нас новичков, создали бы несколько комментариеф создали раз в жизни, то не напрячгали бы Вас Богов по мелочам.
нам же нужно научиться?
1
393 / 137 / 37
Регистрация: 16.03.2013
Сообщений: 1,497
23.08.2017, 09:18  [ТС] 27
Да, это опять я, назойливый и дотошный, огромная просьба просмотреть код на кнопке, чего я там на....делал не так, вложенные не хочет просматривать. "Отредактировал" код в соответствии с уровнем своего понимания в нем, возможно перестарался, но результат тот же, жесть какая то. Админ сказал, что доступ к сетевым папкам полный, пробовал перенаправить на дисk C:\ ради эксперимента, результат тот же.
Вложения
Тип файла: 7z ПримерПоиск.7z (34.6 Кб, 6 просмотров)
0
10916 / 5608 / 1425
Регистрация: 05.10.2016
Сообщений: 15,852
23.08.2017, 09:24 28
Цитата Сообщение от Braser Посмотреть сообщение
результат тот же
Всё работает!
1
393 / 137 / 37
Регистрация: 16.03.2013
Сообщений: 1,497
23.08.2017, 09:47  [ТС] 29
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Всё работает!
Не смешно.

Добавлено через 2 минуты
как можно изменить в коде поиск по уровню вложенности еще на 1 папку? Может в этом дело?
0
10916 / 5608 / 1425
Регистрация: 05.10.2016
Сообщений: 15,852
23.08.2017, 09:55 30
Цитата Сообщение от Braser Посмотреть сообщение
Не смешно.
Просили проверить - я проверил и отписал. А смешно это или нет - не знаю.

Проверка:
01. Замена кода:
Visual Basic
1
2
    'path = Array("L:\KDBANK\PLAZMA", "L:\KDBANK\PARTDIR", "L:\KDBANK\ZAGOTOVKA")
    path = Array("D:\TEMP") 'Для теста
02. Поместил пустой файл в : d:\Temp\Стойка 123.123.001.txt
03. В форме нажал на кнопку ...

Результат:
Миниатюры
Поиск файла в сетевой директории командой из формы  
1
10916 / 5608 / 1425
Регистрация: 05.10.2016
Сообщений: 15,852
23.08.2017, 10:02 31
Чуть не забыл ...
Тестировалось на: MSA 2013 x86
1
393 / 137 / 37
Регистрация: 16.03.2013
Сообщений: 1,497
23.08.2017, 12:01  [ТС] 32
мне нужно на 1 уровень дальше, d:\Temp\Изделие\Стойка 123.123.001.txt

Добавлено через 3 минуты
дело в том, что в папке, в данном случае Temp, находится допустим 50 папок изделие1, изделие2 ... изделие 50. Нужно все прошарить, найти деталь Стойка 123.123.001.ср и везде где она найдется ее пометить как неактуальную, переименовав ее немного.

Добавлено через 3 минуты
из за чего речь про FSO и зашла. Копнуть нужно глубже

Добавлено через 1 час 49 минут
Надежда помирает последней... никто не может подсказать что-ли чего не так в примере?
0
10916 / 5608 / 1425
Регистрация: 05.10.2016
Сообщений: 15,852
23.08.2017, 12:09 33
Цитата Сообщение от Braser Посмотреть сообщение
никто не может подсказать что-ли чего не так в примере?
Ковыряюсь потихоньку ...
Вопрос:
Вам нужно обрабатывать все файлы или стоп на первом найденном?
1
393 / 137 / 37
Регистрация: 16.03.2013
Сообщений: 1,497
23.08.2017, 12:33  [ТС] 34
Все, именно абсолютно все.
0
Эксперт MS Access
26818 / 14497 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
23.08.2017, 12:34 35
Braser, попробуйте такую полу-рекурсивную процедуру:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Public Sub FindRecurs(file)
    Dim path, i, k, k0, j, newname, cat
    Dim fso As Object, folder As Object, subfold
    
    path = Array(""L:/KDBANK/PLAZMA", "L:/KDBANK/PARTDIR", "L:/KDBANK/ZAGOTOVKA"")
    
    ReDim cat(1, UBound(path))
    For i = 0 To UBound(path)
        cat(0, i) = 0
        cat(1, i) = path(i)
    Next
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    k = UBound(cat, 2)
    k0 = k
    i = 0
    Do While True
        For j = 0 To k
            If cat(0, j) >= i Then
                Set folder = fso.GetFolder(cat(1, j))
                For Each subfold In folder.SubFolders
                    k = k + 1
                    ReDim Preserve cat(1, k)
                    cat(0, k) = i + 1
                    cat(1, k) = subfold
                 Next
            End If
        Next
        If k0 = k Then Exit Do
        k0 = k
        i = i + 1
    Loop
    
    For i = 0 To UBound(cat, 2)
        If fso.FileExists(cat(1, i) & "/" & file) Then
            newname = InputBox("Новое имя файла " & file, , cat(1, i) & "/" & file)
            If newname <> "" And newname <> cat(1, i) & "/" & file Then
                Name cat(1, i) & "/" & file As newname
            End If
        End If
    Next
End Sub
Здесь параметром процедуры file надо подставлять поле Деталь.

Возможно где-то проявится съеденный слэш. Надо подставить
1
393 / 137 / 37
Регистрация: 16.03.2013
Сообщений: 1,497
23.08.2017, 12:35  [ТС] 36
и все найденные нужно пометить как неактуальные, дописав после наименования и расширения какое то условное слово, допустим "изменен".
0
393 / 137 / 37
Регистрация: 16.03.2013
Сообщений: 1,497
23.08.2017, 12:49  [ТС] 37
Уважаемый mobile. вы не могли бы показать в моем примере, как правильно внедрить в него эту процедуру, извиняюсь конечно за наглость, но после предыдущих попыток реализовать задуманное по предложенным в топике примерам, я уже вообще не догоняю что куда внедрить нужно и в каком порядке.
Вложения
Тип файла: 7z ПримерПоиск.7z (34.6 Кб, 2 просмотров)
0
Эксперт MS Access
26818 / 14497 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
23.08.2017, 13:00 38
Braser, попробуйте на вашем примере
Вложения
Тип файла: rar ПримерПоиск.rar (36.1 Кб, 13 просмотров)
1
Модератор
Эксперт MS Access
12106 / 4966 / 791
Регистрация: 07.08.2010
Сообщений: 14,591
Записей в блоге: 4
23.08.2017, 13:17 39
исправила ошибку
Visual Basic
1
2
3
4
5
6
If k = 0 Then
        MsgBox "Файл не найден в указанных папках"
        FindRecurs = False
        Exit Function  '''было exit sub
    End If
    For i = 0 To UBound(cat, 2)
и не заметила проверки есть ли новое имя в подкаталоге
1
393 / 137 / 37
Регистрация: 16.03.2013
Сообщений: 1,497
23.08.2017, 13:59  [ТС] 40
Exit Function '''было exit sub исправил, ошибка выскакивала. Все равно не хочет искать даже на диске С: в корневой, не говоря о вложенных..., вот засада
0
23.08.2017, 13:59
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.08.2017, 13:59
Помогаю со студенческими работами здесь

Организовать поиск заданного файла в указанной директории и ее поддиректории
Доброго времени суток, нужна помощь с выполнением задания поиска указанного файла и в директории (...

Как сделать поиск файла в выбранной директории и открыть в мемо1
Хочу сделать поиск файла по названию, который введу в мемо или едит, в выбранной директории...

Как осуществить поиск файла во всех папках данной директории?
Добрый день! Как осуществить поиск файла во всех папках данной директории? Есть директория, в ней...

Мониторинг файлов в сетевой директории
Здравствуйте. Подскажите, что не так. Есть замечательный инструмент FileSystemWatcher Все отлично...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru