Да! Многопользовательскую базу ДЕЛИТЬ НЕМЕДЛЯ - и думать по другому не мочь!!!
Всё написаное далее относится только к клиетской части, т.е. части с запросами, отчётами, формами, макросами и модулями.
dkny |
1. Что значит эта строка (в коде по ссылке): HasToBeRefreshed = (lngVersionOnServer > lngVersionOnC). И что значит If HasToBeRefresh? Т.е. в процедуре проверки если версия новее, то True, если нет, то False. И эту же конструкцию можно ставить как If HasToBeRefresh, в смысле, если в проверке возвращается True, то If HasToBeRefresh выполняется, если же это False, то идет в Else? |
HasToBeRefreshed - это функция, которая лежит по ссылке
/topic/46825&hl=#323443.
Функция возвращает True если версии на сервере и на компьютере пользователя отличаются, и False, если одинаковы. Причем если в момент запроса база на сервере открыта монопольно, т.е. разработчик копается в ейных нутрях, то функция тоже вернет False и, соответственно, не будет предпринята попытка копирования с сервера... А так всё правильно понимается: HasToBeRefresh возвращает True - выполняется If , возвращает False - выполняется Else
dkny |
2. Куда вставить код проверки и копирования? (на пальцах) |
Господа офицеры, Молчать!!!

В совершенно новый и отдельный файл аксесной базы. В модуль всталяется код, создаётся макрос с именем AutoExec, в этом макросе выбирается команда RunCode и в свойстах команды указывается имя функции StartApplication().
Эта "Стартовая База" открывается, AutoExec автоматически запускает функцию, функция сравнивает версии, при необходимости копирует новую версию на компьютер пользователя, открывает рабочую базу и закрывает саму Стартовую Базу, т.е. саму себя.
dkny |
3. Папка для базы это "рюшечки"? :)) И зачем она, если путь базы "C:\\"? |
На самом деле, вряд ли кто хранит свои базы на "C:\\". Обычно это некая папка на локальном диске, которая назначается Админом базы (читай "тобой"), и для простоты администрирования эта папка лежит и называется одинаково. Так вот, представим - папку переименовали, снесли или вообще заменили комп, а положить копию рабочей базы на локальный диск надо... Вот тут и треба проверить весь путь на существование и, при его отсутствии, воссоздать.
dkny |
4. А зачем нужна проверка пользователя по сетевому имени? Для того, чтобы запустить главную базу с требуемым именем пользователя, на случай, если он его забыл? :) Смайл, потому что у меня на машинах работают несколько менеджеров (точнее, своих машин нет ни у кого, пользуются свободной), поэтому имя вводят всякий раз самостоятельно. Зы: но это шикарно, конечно :) |
Не на случай "если забыл", а для того чтоб вообще не запоминал :)
У нас каждый пользователь входит в Windows под своим логином, и нет смысла просить вводить логин ещё и на базу (своего рода "Аутентификация на уровне Windows")... но это вопрос организации безопастности.
Если используется файл рабочей группы, то имя пользователя в командной строке можно не указывать - Access сам спросит.