Текущий архив: 2003.07.28;
Скачать: CL | DM;
Вниз
Соединение с запароленной базой через ADO Найти похожие ветки
← →
Zergling (2003-07-04 06:32) [0]Доброго Всем дня! Есть запароленная база. Произвожу с ней соединение через TADOConection, свойство компонента LoginPrompt установил в true. При соединение с БД выводиться "LoginPromp". После ввода имени пользователя и пароля выводиться сообщение, что база данных не найдена или открыта в монопольном режиме другим пользователем. Но когда пароль снят с БД все открывается без проблем. Как быть? Что я неверно делаю? Подскажите пожалуйста.
← →
sniknik (2003-07-04 08:22) [1]неверное то что "После ввода имени пользователя и пароля" а пароль задан на базу (разные вещи). на базу задается в строке подключения в Data Link Properties это в закладке All - Jet OLEDB:Database Password=111
(или просто дописать к строке)
нда чуть не забыл, это для подключения через Jet, для ODBC алиаса Access будет по другому. (как не знаю, не пользовался, но наверняка не сложнее чем с jet)
← →
Zergling (2003-07-04 09:02) [2]sniknik © (04.07.03 08:22)
%-( Тоже самое. В БД создал нового пользователя. Дал ему все разрешения. Далее в Data Link жестко прописал имя пользователя и пароль БД. Выводит тоже самое сообщение. Тоже работаю через MS Jet 4.0.
← →
sniknik (2003-07-04 10:47) [3]я же говорю юзер и база разные вещи, на юзера по другому задается через системную базу.
оставь юзера Admin (по умолчанию) пароль пустой. а в лополнительной закладке в Data Link -> All ставь значение твоего пароля в пункте Jet OLEDB:Database Password.
← →
Zergling (2003-07-07 08:30) [4]sniknik © (04.07.03 10:47)
Чушь какая то! Нефига не получается! Тоже сообщение.
По порядку:
1. Provider
a. MS Jet 4.0 OLE DB Provider
2. Connection
DataBase Name - путь к моей базе
a. User Name - Admin
b. Password - пустой
c. Blank password - checked=true
d. Allow saving password - checked=false
3. Advanced
a. Access permissions - ReadWrite
4. All
a. Jet OLEDB:Database Password - пароль установленный в моей БД
Может проблема в чемто другом? Может в Access еще что то нужно сотворить, или в TADOConnection чего нибудь установить? Вполне вероятно, что до меня упорно, что то не доходит. Разжуйте глупому пожалуйста.
← →
Edward (2003-07-07 11:06) [5]С провайдером Provider=Microsoft.Jet.OLEDB.4.0, база действительно не открывается, попробовал через Provider=MSDASQL.1, создав пользовательский DSN в ODBC32 Administrator, работает, строка подключения:
Provider=MSDASQL.1;Persist Security Info=True;Data Source=SecMdb
, где SecMdb - DSN, при этом необязательно в соединении указывать пароль и имя что в DSN, так и в ConnectionString, пароль и имя можно задать в событии ADOConnectionWillConnect:
procedure TForm1.ADOConnection1WillConnect(Connection: TADOConnection;
, при этом LoginPromt:=False.
var ConnectionString, UserID, Password: WideString;
var ConnectOptions: TConnectOption; var EventStatus: TEventStatus);
begin
UserID := "Admin";
Password := "123";
end;
← →
sniknik (2003-07-07 11:12) [6]> Edward (07.07.03 11:06)
> С провайдером Provider=Microsoft.Jet.OLEDB.4.0, база действительно не открывается,
странно, я уже года два так работаю и даже не замечал что не открывается. глюки? ;о))
Zergling © (07.07.03 08:30)
это если пароль на базу, и больше ничего не нужно. ну разве для удобства отключить LoginPrompt в ADOConnection
просто заведи строку со своими изменениями (имени базы и пароля, больше ничего не меняй)
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\DataBaseName.MDB;Persist Security Info=False;Jet OLEDB:Database Password=111
> Может проблема в чемто другом?
явно в другом, но не в Access-е.
может у тебя как раз пароль на юзера, как ты его заводил?
(на юзера это это отдельная песня)
← →
Zergling (2003-07-07 11:37) [7]sniknik © (07.07.03 11:12)
> ну разве для удобства отключить LoginPrompt в ADOConnection
Не для удобства, а грабля оказывается ВНЕМ БЫЛА!!! Ну-у-у блин скоко я промаялся! Проект уже почти закончил, а тут дело все встало из-за пороля. sniknik © БОЛЬШОЕ СПАСИБО! ВСЕ РАБОТАЕТ.
P.S. надеюсь вопросаим не очень замучил.
← →
Edward (2003-07-07 12:04) [8]Спасибо sniknik © (07.07.03 11:12), заработало! :-))
← →
Zergling (2003-07-07 12:05) [9]Еще вопрсец назрел. Сразу не сооброзил по этому поводу. Желательно чтобы перед соединением с БД пользователь сам вводил пороль т.к. в *.udl файле пароль открыто лежит на диске. Можно конечно и в ConnectionString накатать, но при смене пароля в БД предется заного проект перекомпелировать. Создал форму для ввода пароля, а теперь необходимо программно достучаться до Jet OLEDB:Database Password. Ищу, но пока не нащел. Если кто знает подскажите люди добрые.
← →
Edward (2003-07-07 12:19) [10]Так ConnectionString формируй в runtime, показываешь форму с вводом пароля, формируешь строку как у sniknik ©
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\DataBaseName.MDB;Persist Security Info=False;Jet OLEDB:Database Password=Сюда вставляешь введенный пользователем пароль, и пытаешся открыть базу, не открывается, значит пароль неверный, мессадж пользователю.
← →
Zergling (2003-07-07 14:14) [11]Еще проблемка.
Edward (07.07.03 12:19)
> Так ConnectionString формируй в runtime, показываешь форму с вводом пароля,
Можно, но:
1. Программу могут перенести к примеру на систему с Microsoft.Jet.OLEDB.3.0, а не с Microsoft.Jet.OLEDB.4.0 => как узнать установленную версию Microsoft.Jet.OLEDB?
2. Поэтому я решил попробовать читать данные из *.udl файла, а строку с паролем в конец приписать (надеюсь порядок следования не играет особого значения). Но ето я уже завтра поэксперементирую.
Страницы: 1 вся ветка
Текущий архив: 2003.07.28;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.005 c