смена пароля средствами ADO

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
cherep20
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.04.2005 (Чт) 17:26

смена пароля средствами ADO

Сообщение cherep20 » 04.05.2005 (Ср) 16:03

Может кто нибудь подскажет....
Подсоединяюсь к БД (Oracle 9.2) средствами ADO через OleDB

Код: Выделить всё
Connection.Provider = "OraOLEDB.Oracle"
Connection.ConnectionString = "Data Source=" & DBalias & ";User Id=" & username & ";" & _
            "Password=" & pass & ";Extended Properties=PLSQLRSet=1;PwdChgDlg=1;FetchSize=600"
Connection.CursorLocation = adUseClient
Connection.Open


Если пароль у пользователя истекший, то выдается OleDB-шный диалог смены пароля. После внесения паролей - выдает все время ошибку - отсутствует или неверный пароль.
Хотя он присутствует и верный.
Подскажите, в чем может быть дело?

val
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 14.11.2002 (Чт) 1:14

Сообщение val » 04.05.2005 (Ср) 16:40

После того как user меняет истекший пароль на новый,
проверь если ты обновляешь значение переменной pass.
После чего вызывай свой Connection string и подсоединяйся сново.

cherep20
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.04.2005 (Чт) 17:26

Сообщение cherep20 » 04.05.2005 (Ср) 16:53

так дело в там что доступа к процессу смены пароля нету.
Как я понял это выполняет сама компонента OleDb.
То ест в коде я ничего не обрабатываю.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 04.05.2005 (Ср) 17:29

В таком случае убери вот это:
Код: Выделить всё
PwdChgDlg=1;

cherep20
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.04.2005 (Чт) 17:26

Сообщение cherep20 » 04.05.2005 (Ср) 17:55

Вы не поняли.
Ситуацию смены пароля мне надо обеспечить.
Только как?
Если я уберу PwdChgDlg=1
То тогда будет просто выдаваться ошибка, а мне надо именно сменить пароль.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 04.05.2005 (Ср) 18:16

Значит так. При первом соединении ты указываешь все как обычно, но после установки соединения проверяешь вот это:
Код: Выделить всё
If Conn.State and adStateOpen > 0 Then
  ' Connection already open
Else
  ' Connection closed after password change; reconnect with new password
end If


Кстати, с каких это пор СУБД стали сами определять степень свежести пароля? Впрочем, от Оракла можно и не такого ожидать...

val
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 14.11.2002 (Чт) 1:14

Сообщение val » 04.05.2005 (Ср) 18:28

To Ennor
oracle9 имеет такие возможности.

То cherep20
PwdChgDlg=1 уберать не надо. После того как ты обновил пароль, это не значит что база данных откроется сама, т.к. твой connection string содержит старый пороль. Обнови значение переменной pass и вызывай свою функцию соединения заново.

cherep20
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.04.2005 (Чт) 17:26

Сообщение cherep20 » 05.05.2005 (Чт) 10:55

а откуда я могу получить новое значение pass?
В оракле пароль не поменялся.
То есть не прошла именно сама процедура смены пароля :(
То есть первый, второй, и тд раз подсоединяюсь и все время passowrd expired и выдается диалог смены пароля, который после заполнения выдает ошибку missing password(s)
Все это происходит на инструкции open текущего соединения.
Что делать - непонятно :(


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 157

    TopList