Каким образом подключение данных только для чтения к MS Excel / Access из MS Excel может предотвратить блокировку файла MS Access для редактирования?

341
Pherdindy

Меня беспокоит то, что я использую MS Excel, чтобы установить соединение для передачи данных с несколькими файлами MS Access / MS Excel, но в этом нет необходимости писать. Единственное, для чего используется соединение данных - это извлечение данных. Но тогда пользователи, желающие записать данные в базу данных, не смогут этого сделать, поскольку подключение к данным заблокирует файлы MS Access / MS Excel для редактирования. Так есть ли способ, которым я могу установить подключение только для чтения данных, позволяя другим редактировать и сохранять файл?

0

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

В зависимости от того, как вы настраиваете свои ссылки на данные, вы можете указать следующее свойство ссылки на данные:

Поделиться Deny None

Настройка 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

Похожие вопросы