Каким образом подключение данных только для чтения к MS Excel / Access из MS Excel может предотвратить блокировку файла MS Access для редактирования?
341
Pherdindy
Меня беспокоит то, что я использую MS Excel, чтобы установить соединение для передачи данных с несколькими файлами MS Access / MS Excel, но в этом нет необходимости писать. Единственное, для чего используется соединение данных - это извлечение данных. Но тогда пользователи, желающие записать данные в базу данных, не смогут этого сделать, поскольку подключение к данным заблокирует файлы MS Access / MS Excel для редактирования. Так есть ли способ, которым я могу установить подключение только для чтения данных, позволяя другим редактировать и сохранять файл?
2 ответа на вопрос
0
harrymc
То, что вы просите, является противоречием в терминах.
Лучшее, что вы можете сделать, - это сохранить две копии файлов: одну только для чтения, а другую обновляемую, с периодическим обновлением доступной только для чтения копии в моменты, когда она не используется.
Как мне обновить их, если они не используются? Я использую сценарий xcopy и планировщик задач Windows, чтобы запускать сценарий каждые 4:30, но если файл, к которому он подключен, открыт, произойдет сбой
Pherdindy 6 лет назад
0
Вместо того, чтобы копировать файл, вы можете переименовать старый файл и скопировать в новый. Переименование по-прежнему работает, даже когда файл используется.
harrymc 6 лет назад
0
Мне нужно автоматизированное решение, хотя. Есть ли способ сделать это без переименования файлов вручную?
Pherdindy 6 лет назад
0
Вы можете добавить его в сценарий.
harrymc 6 лет назад
0
Поэтому, когда я подключаюсь к файлу MS Access, например, из моего файла MS Excel, я могу переименовать файл MS Access в другое имя, а затем вставить новый файл MS Access? Что произойдет, если я обновлю соединение для передачи данных? Обновится ли он до нового файла Access без необходимости перезапуска моего файла MS Excel?
Pherdindy 6 лет назад
0
Эта последовательность должна работать: пользователь u1 получает доступ только для чтения, переименовывает только для чтения и копирует новую версию, u1 закрывает и открывает новую только для чтения. Это зависит от действий Access, которые я не использую. Если вы считаете, что файл, доступный только для чтения, может оставаться открытым в течение нескольких дней, но ваш сценарий запускается каждый день, для переименования вам понадобится инкрементный элемент, например дата.
harrymc 6 лет назад
0
0
Michael Frank
В зависимости от того, как вы настраиваете свои ссылки на данные, вы можете указать следующее свойство ссылки на данные:
Настройка Share Deny Noneпозволит другим пользователям открыть файл базы данных доступа в полном ReadWriteрежиме.
Если у вас уже есть соединение, которое вы хотите изменить, вы можете использовать следующие шаги для добавления Share Deny Noneв строку соединения:
Откройте «Существующие соединения» и выберите соединение, которое вы хотите изменить.
Нажмите «Свойства» и перейдите на вкладку «Определение».
В поле «Строка подключения» вам необходимо добавить / изменить следующее значение:
Mode=Share Deny None;
Пример:
Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin; Data Source=E:\Documents\Test.accdb;Mode=Share Deny None;Extended Properties=""; ...
Это выглядит многообещающе. Попробую завтра.
Pherdindy 6 лет назад
0
Если это помогло, я проверил это дома и смог импортировать БД Access в Excel, открыть БД в Access и изменить некоторые значения, затем сохранить и обновить данные в Excel и наблюдать за обновлением таблицы с новыми значениями из Access.
Michael Frank 6 лет назад
0
Это то, что мне нужно, хотя, где вы можете найти «Свойства канала передачи данных»? В «Существующих соединениях» я не могу найти никакой опции для этого.
Pherdindy 6 лет назад
0
@Pherdindy См. Мое изменение к ответу за это.
Michael Frank 6 лет назад
0
Благодарю. Это решает половину моей проблемы. Другая половина заключается в том, что при использовании файла MS Access он блокируется и не позволяет установить соединение для передачи данных из моего файла MS Excel. Хотя я задал это в отдельном вопросе, потому что это другая проблема.
Pherdindy 6 лет назад
0
Вы имеете в виду уже используется до установления соединения? Я не уверен, что есть способ обойти это, к сожалению ...
Michael Frank 6 лет назад
0
Да, потому что люди, делающие ввод в файл MS Access, могут открыть этот файл где-то в сети. Поэтому, когда он открыт, я не могу установить соединение для передачи данных из Excel. Я жду, если у кого-то есть ответ на другой мой вопрос, но если его нет, мне нужно будет использовать сценарий, чтобы сохранить и закрыть файл Excel, а затем скопировать файлы Access в определенное место в сети, и он просто повторяйте на интервале времени.
Pherdindy 6 лет назад
0