Из документации я бы ожидал, что adModeShareDenyWrite будет таким, но он работает неправильно.Как я могу открыть БД доступа через ADO, чтобы я мог писать, но другие могут читать только?
Я использую базу данных Access через ADO. Моя строка подключения говорит Mode = 8, которая является adModeShareDenyWrite. Но когда я пытаюсь удалить строку из таблицы, я получаю:
Неизвестная ошибка, Описание: Не удалось удалить из указанных таблиц, Источник:. Microsoft Database JET Engine
Другими словами, настройка предупреждения ME от обновления базы данных с использованием моего СОБСТВЕННОГО соединения.
Я нашел еще пару сообщений в Интернете, сообщающих то же самое, параметр adModeShareDenyWrite, используемый с Access, не работает как документированный.
Я ищу решение, не требующее изменения прав администратора. Это должно быть то, что моя программа может контролировать.
Мотивация здесь заключается в том, чтобы свести к минимуму вероятность повреждения базы данных. Одна из причин повреждения файла mdb, задокументированная Microsoft, - это два приложения, которые записываются в один и тот же db. Поэтому я хочу убедиться, что только одно приложение может иметь соединение записи с db. Другие могут читать, но должны терпеть неудачу, когда они пытаются писать. Тот, кто делает соединение, сначала выигрывает.
Я не очень хорошо знаком с Access DB или ADO, но разве это не единственный файл/программа пользователя? Куда входят «другие»? Как вы определяете, кто вы? – 2008-10-02 21:59:32
У вас может быть несколько пользователей, и у них есть система безопасности (но я не знаю ответа на вопрос). – 2008-10-02 22:03:42
Я надеюсь на ответ, который придерживается моей строки соединения ADO, в частности Mode. – 2008-10-02 22:10:56