Добрый день!
Сразу опишу проблему...а далее расскажу историю/предысторию проблемы.
Проблема: при работе БД через локальную сеть, работа с сетевыми каталогами нарушается при открытии третьего подкаталога.
Подробное описание:
Приветствую тебя, дорогой читатель данной темы! Я очень рад, что ты читаешь эти строки. А если ты знаешь как решить появившуюся проблему, то я буду безмерно благодарен!!!
Три года назад, угораздило меня ляпнуть в учреждении, перед курсовым проектом, что я могу сделать БД...
Ну и взгляд сразу пал на 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\", прекрасно всё функционирует.
Однако...при работе с сетевым размещением через раз возникают ошибки "ПУТЬ НЕ НАЙДЕН"...
Рассмотрим код открытия каталогов:
''проверяем существуют ли папки...иначе - создаём её
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"
НО! Уже на третьем шаге:
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\ZNACHENIYA\PED\34\DATA\ZNACHENIYA\PED\34\DATA\ZNACHENIYA\PED\34\DATA\ZNACHENIYA\PED\34\..." - я пол часа переходил дальше.....и не дошёл до конца!!!! КАРЛ! ОТКУДА???...цикличного открытия нет...а папки есть... как так? =.=
Вся АИС работает на VBA, макросы используются краааайне редко, чаще лишь для перехода по записям. Вот... :)