Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
3 / 3 / 1
Регистрация: 22.07.2016
Сообщений: 55
1

Не работает сетевая версия(по локальной сети). Доступ к файлам и каталогам через VBA

03.04.2017, 12:16. Показов 1485. Ответов 8
Метки нет (Все метки)

Добрый день!
Сразу опишу проблему...а далее расскажу историю/предысторию проблемы.
Проблема: при работе БД через локальную сеть, работа с сетевыми каталогами нарушается при открытии третьего подкаталога.

Подробное описание:

Приветствую тебя, дорогой читатель данной темы! Я очень рад, что ты читаешь эти строки. А если ты знаешь как решить появившуюся проблему, то я буду безмерно благодарен!!!
Три года назад, угораздило меня ляпнуть в учреждении, перед курсовым проектом, что я могу сделать БД...
Ну и взгляд сразу пал на MS Access... Ну а что? Удобный конструктор таблиц, встроенный VBA. Констуктор форм и параметральная настройка элементов. Всё хорошо(кроме того, что я терпеть не могу разработку БД хд).
И вот...курсовик написан...диплом написан и окрашен в цвет роз... БД плавно переросла в АИС...с десятком форм/отчётов... Все в восторге, АИС работает стабильно, вот только...за одним рабочим местом. А сотрудников, что должны работать в АИС больше 10-ти... Но, к счастью, ещё в самом начале построения прототипа, чуйка, что потребуется сетевая версия, подсказала, мол делай всё так, что бы было легко адаптировать под клиент-сервер. Ну, так и получилось. По сути, в БД находятся лишь id личных дел и бланков, а сами показатели/оценки/данные, лежат во внешних каталогах и текстовиках. Сами данные подгружаются по мере необходимости путём считывания данных из файла. Сам каталог с файлами статичен: C:\BAZA\ ну и папки по разделам... например:
"C:\BAZA\DATA\ZNACHENIYA\MED\..." - ну, тут всё просто. Значения медицинского бланка лежат в данном каталоге, и подгружаются из текстового файла, что лежит внутри папки MEDрасположенной по вышеуказанному адресу.
"C:\BAZA\1\psy\14\..." - тут уже данные динамически изменяемы. 1 - номер личного дела, а 14 - номер психологического бланка. В данном каталоге лежат оценки в текстовом файле.
Текстовый файл, это файл в формате .txt
АИС работает как советские часы - стабильно и без задержек. И кажется, как перейти на сетевую версию? Просто, заменить обращение к корневому каталогу, внутри VBA c "C:\BAZA" на расположение в сети ПК-сервера, в моём случае, пусть это будет данный адрес: "\\192.168.1.191\bd\BAZA".
В самописном модуле, переменной присваивается значение размещения и вставляется перед непосредственным указанием размещения. Т.е, строка принимает значение:
fname = m_st.st & idличногодела & "\PEDAGOG" & IDбланка & "\polyaNach.txt"
где m_st.st - это обращение к модулю m_st и его переменной st со значением "\\192.168.1.191\bd\BAZA".
Сразу скажу, забегая вперёд, что модуль работает исправно. При переменной st со значением "C:\BAZA", прекрасно всё функционирует.
Однако...при работе с сетевым размещением через раз возникают ошибки "ПУТЬ НЕ НАЙДЕН"...
Рассмотрим код открытия каталогов:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
''проверяем существуют ли папки...иначе - создаём её
fname1 = m_st.st
 If Dir(fname1, vbDirectory) = "" Then MkDir (fname1)
ChDir fname1
 
fname1 = idличногодела & ""
 If Dir(fname1, vbDirectory) = "" Then MkDir (fname1)
ChDir fname1
 
fname1 = "PEDAGOG"
 If Dir(fname1, vbDirectory) = "" Then MkDir (fname1)
ChDir fname1
 
fname1 = IDбланка & ""
 If Dir(fname1, vbDirectory) = "" Then
''так как мы проверили/создали все папки, то уже можем работать непосредственно с полным путём 
fname = m_st.st & idличногодела & "\PEDAGOG" & IDбланка & "\polyaNach.txt"
НО! Уже на третьем шаге:
Visual Basic
1
2
3
fname1 = "PEDAGOG"
 If Dir(fname1, vbDirectory) = "" Then MkDir (fname1)
ChDir fname1
Программа выдаёт ошибку, мол, файл не найден... Несмотря на то, что при debug-режиме, при наведении на каждую из переменных, данные верны...каталоги существуют... А ошибка - появляется... Всегда на третьем шаге... И не только при данном обращении к каталогам. Ошибка появляется непредсказуемо. Один раз бланк может загрузиться спокойно. Тут же повторим операцию - ошибка появится(или не появится). И вообще не понятно с чем это связанно...
Ошибка возникает как на пк-сервере, так и на пк-клиенте(аналогичная ситуация на 4-ёх других пк-клиентах).
Папка-корневой каталог расшарена, клиенты находятся в одной сетевой зоне...
Изначально, Access вовсе не хотел работать с сетевой папкой... Помог запуск Access от имени администратора(тем самым мы исключили места с ОС XP...прекрасно!(нет))...каждый раз так делать крайне не удобно... Так же, по какой то причине, работа с сетью работает лишь на MS Access 2010, хотя без сетевого каталога, всё отлично работает и через 2007 год. Посторонние библиотеки не задействованы, MISSING-ов нет...
Ещё странно то, что ошибка чаще всего возникает при обращении к файлу для ПРОЧТЕНИЯ. Для записи, чаще всего всё работает отлично...
Ах да... после возникновения ошибки, в папке "Документы", появляется папка с последующими каталогами:
"C:\Users\Admin\Documents\DATA\ZNACHENIYA\PED\34\DATA\ZNACHE NIYA\PED\34\DATA\ZNACHENIYA\PED\34\DATA\ZNACHENIYA\PED\34\DA TA\ZNACHENIYA\PED\34\..." - я пол часа переходил дальше.....и не дошёл до конца!!!! КАРЛ! ОТКУДА???...цикличного открытия нет...а папки есть... как так? =.=
Вся АИС работает на VBA, макросы используются краааайне редко, чаще лишь для перехода по записям. Вот...
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2017, 12:16
Ответы с готовыми решениями:

VBA: GetObject. Доступ к файлу, открытому на другом компьютере в локальной сети
Всем доброго времени суток! Прошу откликнуться, кто сталкивался с необходимостью подключиться при...

Запретить доступ к определённым каталогам и файлам пользователям
Помогите разобраться с htaccess, я впервые с ним сталкиваюсь и мне надо запрещать доступ к...

Доступ к локальной сети через vpn
Подскажите пж-та, имеется следующая схема: На одной стороне - ПК1 с белым ip-адресом 1.1.1.1,...

По Wi-fi интернет работает быстрее чем доступ по локальной сети
Ноутбук подключен по wi-fi. Сигнал хороший, в прямой видимости. Интернет тест спокойно показывает...

8
Модератор
Эксперт MS Access
3690 / 2118 / 522
Регистрация: 12.06.2016
Сообщений: 5,415
03.04.2017, 12:39 2
....клиент-сервер....
Придирка: пока еще это только файл-сервер.
2
3 / 3 / 1
Регистрация: 22.07.2016
Сообщений: 55
03.04.2017, 12:41  [ТС] 3
Capi, спасибо за уточнение) Я, к сожалению, слаб в теории
0
Эксперт MS Access
26726 / 14405 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
03.04.2017, 20:25 4
Предположу, что в некоторых случаях операции с файловой системой просто не успевают завершиться и выходят на ошибку. По идее такие ситуации должны исправляться, если дать ФС время на завершение. Такой командой в ВБА может служить DoEvents, которая передает управление операционной системе для обработки других событий. Если прав, то после каждой MkDir надо ставить DoEvents
Visual Basic
1
 If Dir(fname1, vbDirectory) = "" Then MkDir (fname1): DoEvents
2
Заблокирован
03.04.2017, 20:51 5
Цитата Сообщение от mobile Посмотреть сообщение
DoEvents
вам не поможет, в данном случае.
У вас что то с сетью - IMHO нужны более "тяжёлые" проверки перед обращением к файлам, либо просто ошибки в коде.
Можно попробовать использовать FileSystemObject - возможно поможет.
1
3 / 3 / 1
Регистрация: 22.07.2016
Сообщений: 55
03.04.2017, 21:31  [ТС] 6
mobile, да, так же были мысли, что это происходит из-за неких сетевых обновлений. Обязательно попробую DoEvents! Спасибо большое! О результатах отпишу. =)
Eugene-LS, с FSO работал лишь немного, но думаю, что действительно необходимо использовать что-то более "серьёзное". О ходе работы сообщу по мере реализации. Большое спасибо!

А вообще...access без входа от имени администратора, может ли создавать папки/файлы на серверной машине/пк?
0
Заблокирован
03.04.2017, 21:37 7
Цитата Сообщение от JakeWork Посмотреть сообщение
А вообще...access без входа от имени администратора, может ли создавать папки/файлы на серверной машине/пк?
Используются права пользователя Windows
1
3 / 3 / 1
Регистрация: 22.07.2016
Сообщений: 55
03.04.2017, 21:40  [ТС] 8
Eugene-LS, Большое спасибо за ответ!
Хотя...очень странно то, что тот же самый MkDir в Access работает от имени администратора и создаёт каталоги, а без запуска от имени администратора выдаёт ошибку... хотя права пользователя настроены... Пробовал как на "голом" проекте, так и на АИС. Чтож...будем штурмовать через FSO.
0
Заблокирован
03.04.2017, 21:49 9
Цитата Сообщение от JakeWork Посмотреть сообщение
Хотя...очень странно то, что тот же самый MkDir в Access работает от имени администратора и создаёт каталоги
Всё от конкретной оси зависит
Под Windows 2.1 одно, и под Windows 10 другое, + сетевая политика и настройка юсеров
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2017, 21:49

Доступ к серверу в локальной сети через внешний IP-адрес
Все добрый день! Схема стандартная: роутер с OpenWrt, в который воткнут кабель провайдера и...

Доступ к файлу в локальной сети из программы запущенной через браузер
Столкнулся с проблемой, которую даже не имею понятия как решать. Моя программа запускается Веб...

Сетевая версия 1С не работает проводки
Добрый день! Я не сталкивался с 1С не администрировал, так получилось, что программист 1С в отпуске...

сетевая карта для работе в локальной сети (10.) + модем Yota
Добрый день, на работе нужна 1 сетевая карта, чтобы по нескольким сетевым адресам работать в сети,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru