Стандартный запрос логина и пароля

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Стандартный запрос логина и пароля

Сообщение sergey-911 » 12.11.2007 (Пн) 13:39

Доброго времени суток уважаемые.
Нашел код, который выводит окно ввода логина и пароля (стандартного, виндового).
Работает только для RDO.
Как то же реализовать для ADO?

Код: Выделить всё

Option Explicit

Dim en As rdoEnvironment
Dim rs As rdoResultset
Dim cn As rdoConnection

Private Sub Command1_Click()

    Dim strDSN As String, strSQL As String
    Set en = rdoCreateEnvironment("", "", "")
    en.CursorDriver = rdUseOdbc
    strSQL = InputBox("Enter an SQL string:")
On Error Resume Next
    Set cn = en.OpenConnection(strDSN)
    'Set rs = cn.OpenResultset(strSQL, rdOpenKeyset, rdConcurRowVer)
   
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
On Error Resume Next
    rs.Close
    cn.Close
    en.Close
End Sub
Вложения
ConnectDefault.rar
Пример, который выводит окно ввода логина и пароля
(5.32 Кб) Скачиваний: 256
С уважением, Сергей.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.11.2007 (Пн) 13:43

Примерно также.
У ADO есть свой набор свойств соединения, одно из них надо установить в "запрашивать у пользователя". Правда имя свойства и нужное значение не помню, надо в MSDN смотреть.
Lasciate ogni speranza, voi ch'entrate.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 12.11.2007 (Пн) 13:52

alibek писал(а):Примерно также.
У ADO есть свой набор свойств соединения, одно из них надо установить в "запрашивать у пользователя". Правда имя свойства и нужное значение не помню, надо в MSDN смотреть.


Спасибо Алибек. Но прежде, чем обратиться за помощью, я читал MSDN и пару глав из книг, посвещенных ADO подключению, но не разобрался.
Вопрос остается открытым.
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 12.11.2007 (Пн) 14:11

ADO подкдючаю следующим образом:

Код: Выделить всё

Private conn As ADODB.Connection

Private Sub Command1_Click()
    'Подключение к БД посредством ADO
    Set conn = New ADODB.Connection
    conn.Open ("PROVIDER=MSDASQL;dsn=Deficit;uid=Log;pwd=Pas;")
End Sub

Log и Pas берется из собственной (моей) формы авторизации.
Если написать
Код: Выделить всё

conn.Open ("PROVIDER=MSDASQL;dsn=Deficit;uid=;pwd=;")

, то вместо вывода виндовой формы авторизации, по аналогии с RDO, выдается ошибка (user is null).


Как у ADO установить свойство в "запрашивать у пользователя".
С уважением, Сергей.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.11.2007 (Пн) 14:19

Нет, не помню.
Но стандартный диалог на создание ConnectionString я как-то вызывал.
Lasciate ogni speranza, voi ch'entrate.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 12.11.2007 (Пн) 14:23

Точно в ADO?
С уважением, Сергей.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 12.11.2007 (Пн) 14:41

может так:

Код: Выделить всё
Option Explicit
Dim pConnect As String


Private Sub Command1_Click()
Dim b As Boolean

b = Me.ADO_OpenConnection(pConnect, "sa", "", adPromptAlways)
Debug.Print b
Me.Text1.Text = pConnect

End Sub

Private Sub Form_Load()
pConnect = "Provider=MSDASQL.1;Extended Properties=""DSN=konst_test;APP=Visual Basic;WSID=KONST;DATABASE=test"""
Me.Text1.Text = pConnect
End Sub


Public Function ADO_OpenConnection(Optional ConnectString As String = "", _
                                   Optional UserName As String = "", _
                                   Optional Password As String = "", _
                                   Optional ConnectPrompt As ADODB.ConnectPromptEnum = adPromptNever, _
                                   Optional ByRef ActiveConnection As ADODB.Connection) As Boolean
Dim objCn As ADODB.Connection, bClose As Boolean

  On Error GoTo Error_Open
  If ActiveConnection Is Nothing Then
    Set objCn = New ADODB.Connection
    bClose = True
  Else
    Set objCn = ActiveConnection
    If objCn.State <> adStateClosed Then objCn.Close
    bClose = False
  End If
  ' Установка параметров соединения
  If Len(ConnectString) = 0 Then ConnectString = pConnect
  objCn.ConnectionString = ConnectString
  If Len(UserName & Password) > 0 Then
    objCn.Properties("User ID") = UserName
    objCn.Properties("Password") = Password
  End If
  objCn.Properties("Prompt") = ConnectPrompt
  ' Открытие соединения
  objCn.Open
  pConnect = objCn.ConnectionString
  ' Закрытие объекта
  If bClose Then
    objCn.Close
    Set objCn = Nothing
  End If
  ADO_OpenConnection = True
  Exit Function

Error_Open:
  If bClose Then Set objCn = Nothing
  If ADO_RaiseError Then Err.Raise Err.Number, Err.Source, Err.Description
End Function

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.11.2007 (Пн) 14:56

Да, оно.
Но я имел ввиду диалог конструирования ConnectionString для ADO.
Lasciate ogni speranza, voi ch'entrate.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 12.11.2007 (Пн) 15:18

Спасибо Огромное
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 19.11.2007 (Пн) 15:10

1) Выполняю функцию
b = Me.ADO_OpenConnection(pConnect, "", "", adPromptComplete)

2) Пытаюсь получить из этой функции необходимые данные:

a) СТРОКУ ПОДКЛЮЧЕНИЯ
objCn.Properties.Item(86).Value
'или
objCn.Properties.Item("Extended Properties").Value

b) ЛОГИН пользователя
objCn.Properties.Item(40).Value
'или
objCn.Properties.Item("User Name").Value

c) ПАРОЛЬ
objCn.Properties.Item(77).Value
'или
objCn.Properties.Item("Password").Value
'Должна возвращать пароль?

НО, пароль в этом случае получить не могу (= EMPTY)

Если выполнить функцию с указанием логина и пароля
b = Me.ADO_OpenConnection(pConnect, "sa", "***", adPromptComplete)
, то окно идентификации для пользователя, соответственно, не появляется, но зато, в этом случае пароль возвращается, причем корректно (не пустой).

Как выполняя функцию
b = Me.ADO_OpenConnection(pConnect, "", "", adPromptComplete)
правильно получить пароль и логин пользователя для дальнейшего использования в коде программы? Не разбирать ведь строку подключения на составляющие! Будет неправильно, некорректно и возникает вероятность ошибки!

Прошу прощения за отсутствие тегов. Браузер не отображает.
С уважением, Сергей.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 19.11.2007 (Пн) 16:16

если пароль не указывается заранее, то он и не должен возвращаться, для этого и открывается диалог ввода соответсвтенно

по-простому:
если хотите секретный ввод - вот вам диалог, но пароля не узнаете

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 20.11.2007 (Вт) 0:47

Спасибо уважаемый Konst_One.
НО, ведь возвращается строка, которая содержит и сведения о подключении, и логин, и пароль, при выполнении функции
Код: Выделить всё

b = Me.ADO_OpenConnection(pConnect, "", "", adPromptComplete)

Логично предположить, что существует аналогичная возможность вернуть ЛОГИН и ПАРОЛЬ (манипуляции со строкой, содержащей логин и пароль в расчет не берем).
Пароль и логин мне нужен для того, чтобы подключиться приложению к другой БД, на другом сервере, используя тот же логин и пароль. Не выводить ведь пользователю несколько диалоговых окон авторизации... :(

Кстати, только сейчас обнаружил:
Код: Выделить всё

objCn.Properties.Item("User Name").Value

, да и
Код: Выделить всё

objCn.Properties.Item("Extended Properties").Value

Выводят параметры весьма глючно.

Неужели самое правильное, что можно придумать – это своё окно авторизации?
Неужто стандартное использовать нельзя?

И еще, если все-таки можно использовать стандартное окно авторизации пользователя, то можно ли отключить дополнительные параметры, чтобы пользователь не мог поменять БД и сервер при подключения?
Вложения
ConnectDefault.rar
Пример вывода стандартного окна авторизации
(1.91 Кб) Скачиваний: 238
С уважением, Сергей.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 21.11.2007 (Ср) 16:24

в таком случае вам придется свой диалог делать.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.11.2007 (Ср) 17:07

Тем более, что самодельный удобнее для пользователя.
Сравни системный и, например, такой:
Вложения
login-extra.png
Окно формы логина.
login-extra.png (4.86 Кб) Просмотров: 9138
Lasciate ogni speranza, voi ch'entrate.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 22.11.2007 (Чт) 9:47

Спасибо Вам, уважаемые.
Лично мне больше нравится системный диалог. Жаль, но придется по прежнему использовать свой диалог авторизации.
С уважением, Сергей.

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 22.11.2007 (Чт) 11:57

sergey-911 у меня гдето был классный диалог Пароля и логина!
Сейчас я на курорте ,но как приеду выложу обязательно ;)
«Не важно, откуда ты. Важно - где ты.»

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 24.11.2007 (Сб) 14:17

Спасибо DKbelRoma!
С уважением, Сергей.

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 25.11.2007 (Вс) 20:37

sergey-911 то что хотел тебе показать ненашол, но есть вот это!
Разберёшся в коде и переделаеш под себя!
Помоему прикольный запрос пароля... :oops:
Вложения
запрос логина и пароля.rar
(2.09 Кб) Скачиваний: 244
«Не важно, откуда ты. Важно - где ты.»

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 25.11.2007 (Вс) 22:51

После этого поста мне захотелось тебя забанить. Т.е. не вообще забанить, а запретить тебе писать в тематические разделы.

Сообщение "Ну-ка заходи, сволочь" вообще убило.
Слово "ну-ка", кстати, пишется не через дефис, а слитно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.11.2007 (Вс) 23:20

Ну-ка пишется через дефис.

Но к желанию забанить присоединяюсь.
Изображение

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 26.11.2007 (Пн) 18:31

Ну вы выдали....
Почему банить меня ??? Забаньте автора проэкта...
Я это несаздавал...Он просил запрос пароля ? Я ему его дал ,а автор темы пусть переделывает его под себя...
Причём здесь я???
Пример взят из книги по VB как пример запроса пароля и выгрузки формы....
з.ы. ненадо банить :cry: меня и так здесь нелюбят :cry:
«Не важно, откуда ты. Важно - где ты.»

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 26.11.2007 (Пн) 20:55

Почему банить меня ???

Гхм. Ну не меня же?

Забаньте автора проэкта...

За что?

Я это несаздавал...

Hacker's AI Error: Unknown entity 'несаздавал'.

Он просил запрос пароля ? Я ему его дал

То что ты дал, просто какая-то мерзость.

Пример взят из книги по VB как пример запроса пароля и выгрузки формы....

В печку её.

меня и так здесь нелюбят

А что, должны?.. просто так, за красивую аватару?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 27.11.2007 (Вт) 16:01

Ладно.... Рас вас так расстроило то что я выложил...
Я исправлюсь.... Ждите следуёщее сообщение с переделаным кодом запроса пароля! :oops:
«Не важно, откуда ты. Важно - где ты.»

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Я исправился...

Сообщение DKbelRoma » 28.11.2007 (Ср) 20:09

Вод собственно.... Я исправился....
Смысл такой : вводиш пароль, если правильный то картинку на форме видно , если нет то не видно...
sergey-911 - вобщем переделаеш саму формы так как тебе нужно.
Хакер - я исправил как и обещал.
з.ы. пароль такой как и указан - "Твой пароль"
Вложения
Запрос пароля(стандарт) - исправленный.rar
(47.43 Кб) Скачиваний: 223
«Не важно, откуда ты. Важно - где ты.»

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.11.2007 (Ср) 20:56

Он издевается :x
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 29.11.2007 (Чт) 15:49

Хакер почему я издеваюсь? Я исправил как и обещал... Извени если что то не так. А что в том что я выложил плохого? :cry:
«Не важно, откуда ты. Важно - где ты.»

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 29.11.2007 (Чт) 16:34

А чего в нем хорошего то? В выложенном то?
Весь мир матрица, а мы в нем потоки байтов!

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

простой пример

Сообщение DKbelRoma » 29.11.2007 (Чт) 18:40

Viper - ничего хорошего... :lol: просили простой пример? вот и он...
«Не важно, откуда ты. Важно - где ты.»

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 29.11.2007 (Чт) 21:13

DKbelRoma
Есть такой сюжет Ералаша:
Мужик возится с машиной, которая незаводится, вокруг бегает мальчишка лет 6-7.
-- Дядя, я знаю что у вас сломалось.
-- Иди мальчик.
-- Дяденька, ну я знаю что у вас сломалось.
-- Мальчик, иди, не мешай.

Все попытки водителя заставить своего железного коня завестись оказываются безуспешными, и он:
-- Мальчик! Ну скажи пожалуйста! Что у меня сломалось?
-- Ма-а-ши-и-на-а.

Так вот, попытки этого мальчика помочь сильно походят на твои попытки помочь.

Когда тебе говорят, что твоя помощь бесполезна, ты извиняешься (за что? ты кого-то обидел разве?), обещаешь исправиться, и:
-- Авто-о-о-мо-о-би-и-и-ль.

__________

Ты понимаешь, что этот пример, который ты выложил - бесполезен. Ты понимаешь, что запрос пароля с помощью InputBox - это позорно?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 29.11.2007 (Чт) 22:12


След.

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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 2

    TopList