2013-04-18 2 views
1

У меня есть база данных с защитой паролем, которая должна быть обновлена ​​за одну ночь. Мы написали Lite-приложение Java, которое принимает некоторые параметры (например, макрос, путь, тип файла и т. Д.), А затем выполняет VBScript через командную строку. Поэтому у меня был бы способ «сохранить» имя пользователя и пароль, а затем передать его в VBScript, но до сих пор я не нашел никаких других сообщений об этом, что действительно решает мою проблему. Вот пример кода открытия доступа db, с макросом, и мне нужно заставить его принять имя пользователя и пароль.Открытие базы данных с защищенным паролем доступа с использованием VBScript

Set accdbObj = Wscript.CreateObject("Access.Application") 
    accdbObj.Application.Visible = True 

    Message = ("Access Password Update Started With Macro...") 
    LogInformation Message, Path 

    accDatabase = accdbObj.OpenCurrentDatabase(Path) 
    accdbObj.Run Macro 

    accdbObj.Terminate 
    Wscript.Quit 

Имейте в виду, что Path и Macro являются параметры, которые передаются в виде строки.

ответ

2

Дайте OpenCurrentDatabase Method пароль вашей базы данных в качестве третьего аргумента. Однако OpenCurrentDatabase ничего не возвращает, поэтому я не думаю, что имеет смысл присвоить его возвращаемое значение accDatabase. Попробуйте это вместо этого:

accdbObj.OpenCurrentDatabase Path, , "password_here" 

Существует 2 типа паролей для файла доступа Access.

  1. пароль базы данных: один пароль, все пользователи должны предоставить, чтобы открыть БД
  2. пароль безопасности на уровне пользователя: отдельный пароль для каждого определенного пользователя

я написал первую часть этого ответа предполагая, что вы имеете в виду пароль базы данных. Однако затем я заметил, что вы упомянули имя пользователя, которое предполагает, что вы можете использовать ULS (безопасность на уровне пользователя). ULS поддерживается только в более раннем формате файла MDB db. В Access 2007 вы можете использовать новый формат ACCDB, который не поддерживает ULS.

Если вы действительно используете MDB с ULS, вам понадобится другой метод для открытия базы данных. Вы можете использовать DBEngine.CreateWorkspace с вашим именем пользователя и паролем ULS, а затем вызвать OpenCurrentDatabase в этом рабочем пространстве.

+0

Попробуй, какие-либо предложения по имени пользователя? – William

+0

Правильно, я смутился в этом вопросе ... см. Пересмотренный ответ. Тогда вы используете и MDB и ULS? – HansUp

+0

Спасибо! Протестировал пароль, и он сработал! – William

Смежные вопросы