![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Соединение с запароленной базой через ADO [D7, MSAccess]
Zergling © (2003-07-04 06:32:00)Доброго Всем дня! Есть запароленная база. Произвожу с ней соединение через TADOConection, свойство компонента LoginPrompt установил в true. При соединение с БД выводиться "LoginPromp". После ввода имени пользователя и пароля выводиться сообщение, что база данных не найдена или открыта в монопольном режиме другим пользователем. Но когда пароль снят с БД все открывается без проблем. Как быть? Что я неверно делаю? Подскажите пожалуйста.
Zergling (2003-07-07 14:14:00) [1]Еще проблемка.
Edward (07.07.03 12:19)
> Так ConnectionString формируй в runtime, показываешь форму с вводом пароля,
Можно, но:
1. Программу могут перенести к примеру на систему с Microsoft.Jet.OLEDB.3.0, а не с Microsoft.Jet.OLEDB.4.0 => как узнать установленную версию Microsoft.Jet.OLEDB?
2. Поэтому я решил попробовать читать данные из *.udl файла, а строку с паролем в конец приписать (надеюсь порядок следования не играет особого значения). Но ето я уже завтра поэксперементирую.
Edward (2003-07-07 12:19:00) [2]Так 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 12:05:00) [3]Еще вопрсец назрел. Сразу не сооброзил по этому поводу. Желательно чтобы перед соединением с БД пользователь сам вводил пороль т.к. в *.udl файле пароль открыто лежит на диске. Можно конечно и в ConnectionString накатать, но при смене пароля в БД предется заного проект перекомпелировать. Создал форму для ввода пароля, а теперь необходимо программно достучаться до Jet OLEDB:Database Password. Ищу, но пока не нащел. Если кто знает подскажите люди добрые.
Edward (2003-07-07 12:04:00) [4]Спасибо sniknik © (07.07.03 11:12), заработало! :-))
Zergling (2003-07-07 11:37:00) [5]sniknik © (07.07.03 11:12)
> ну разве для удобства отключить LoginPrompt в ADOConnection
Не для удобства, а грабля оказывается ВНЕМ БЫЛА!!! Ну-у-у блин скоко я промаялся! Проект уже почти закончил, а тут дело все встало из-за пороля. sniknik © БОЛЬШОЕ СПАСИБО! ВСЕ РАБОТАЕТ.
P.S. надеюсь вопросаим не очень замучил.
sniknik (2003-07-07 11:12:00) [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-е.
может у тебя как раз пароль на юзера, как ты его заводил?
(на юзера это это отдельная песня)
Edward (2003-07-07 11:06:00) [7]С провайдером 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;
Zergling (2003-07-07 08:30:00) [8]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 чего нибудь установить? Вполне вероятно, что до меня упорно, что то не доходит. Разжуйте глупому пожалуйста.
sniknik (2003-07-04 10:47:00) [9]я же говорю юзер и база разные вещи, на юзера по другому задается через системную базу.
оставь юзера Admin (по умолчанию) пароль пустой. а в лополнительной закладке в Data Link -> All ставь значение твоего пароля в пункте Jet OLEDB:Database Password.
Zergling (2003-07-04 09:02:00) [10]sniknik © (04.07.03 08:22)
%-( Тоже самое. В БД создал нового пользователя. Дал ему все разрешения. Далее в Data Link жестко прописал имя пользователя и пароль БД. Выводит тоже самое сообщение. Тоже работаю через MS Jet 4.0.
sniknik (2003-07-04 08:22:00) [11]неверное то что "После ввода имени пользователяи пароля" а пароль задан на базу (разные вещи). на базу задается в строке подключения в Data Link Properties это в закладке All - Jet OLEDB:Database Password=111
(или просто дописать к строке)
нда чуть не забыл, это для подключения через Jet, для ODBC алиаса Access будет по другому. (как не знаю, не пользовался, но наверняка не сложнее чем с jet)