Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2010, 16:17   #1
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию Авторизация пользователя

Здравствуйте форумчане!
Подскажите как сделать форму авторизации пользователя...
Тоисть пользователь входит в базу и сразу ему выводится форма для ввода логина и пароля, ну и кнопка вход при нажатии на которую и соотвецтвии логина и пароля пользователь попадает на главную форму базы.
Подскажите как реализовать...Заранее спасибо.
revaldo666 вне форума Ответить с цитированием
Старый 07.12.2010, 18:08   #2
Diamand
Форумчанин
 
Аватар для Diamand
 
Регистрация: 07.04.2007
Сообщений: 102
По умолчанию

писал на память когда то тоже нужна была такая вещь ИМХО

Код:
Result = DLookup("[uID]", "Users", "[uLogin]='" & Login & "' AND [uPass]='" &Pass & "'") 
If IsNull(Result) Then 
 'действие если логин пароль не совпадают 
Else 
  'действие если логин и пароль совпадают 
End If

или по серьёзней пример :
защита через определение логина пользователя (при включении компа )
Код:
Public Sub Init() 
   Dim YesterDay As ADODB.Recordset 
   Dim strCurrentConn As String 
   Set YesterDay = New ADODB.Recordset 
   Dim UserRead As String 
   Dim booUserRead As Boolean 
  
   strCurrentConn = CurrentProject.Connection 

   UserRead = GetCurrentUserName() 
   booUserRead = False 
   YesterDay.Open "tblUsers", strCurrentConn, adOpenStatic, adLockOptimistic 
      With YesterDay 
         .MoveFirst 
         Do Until .EOF 
            If Trim$(.Fields("UserID")) = UserRead Then booUserRead = True 
            .MoveNext 
         Loop 
      End With 
   YesterDay.Close 
   If Not booUserRead Then 
      MsgBox "У вас нет полномочий для работы с данной базой" 
      DoCmd.Quit 
   End If 
   Set YesterDay = Nothing 
End Sub 

+модуль 
Option Compare Database 
Option Explicit 
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Public Function GetCurrentUserName() As String 
   Dim strName As String 
   Dim lngChars As Long 
   Dim lngRet As Long 
    
   strName = Space(255) 
   lngChars = 255 
    
   lngRet = GetUserName(strName, lngChars - 1) 
   If lngRet > 0 Then 
      GetCurrentUserName = Trim(left(strName, lngChars)) 
   Else 
      GetCurrentUserName = "Unknow" 
   End If 
End Function
Diamand вне форума Ответить с цитированием
Старый 08.12.2010, 00:07   #3
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

Цитата:
Сообщение от Diamand Посмотреть сообщение
писал на память когда то тоже нужна была такая вещь ИМХО

Код:
Result = DLookup("[uID]", "Users", "[uLogin]='" & Login & "' AND [uPass]='" &Pass & "'") 
If IsNull(Result) Then 
 'действие если логин пароль не совпадают 
Else 
  'действие если логин и пароль совпадают 
End If
Спасибо.
Но немоглибы выпоподробнее обьяснить реализацию??
(На форме 2 поля для ввода логина и пароля,кнопка при нажатии на которую откроется главная форма базы(если логин и пароль соотвецтвуют)и назрел сразу вопрос куда прописывать выражение которое вы написали.
пс:Просто с кодом до сегднешнего времени дела не имел...только простейшие запросы, и вот нестого не с сиго припарило((
Буду примного благодарен.

Последний раз редактировалось revaldo666; 08.12.2010 в 00:20.
revaldo666 вне форума Ответить с цитированием
Старый 08.12.2010, 20:15   #4
Diamand
Форумчанин
 
Аватар для Diamand
 
Регистрация: 07.04.2007
Сообщений: 102
Смущение

на форме должно быть 2 поля для ввода (одно поле логина второе для пароля) и кнопка но мало того нужно подготовить базу что бы после удачного ввода стали доступны объекты (таблицы, формы.....) увы как это сделать сейчас не вспомню т.к. акса на данное время нету тут и на пальцах показать не получится
Diamand вне форума Ответить с цитированием
Старый 09.12.2010, 12:24   #5
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

Цитата:
Сообщение от Diamand Посмотреть сообщение
на форме должно быть 2 поля для ввода (одно поле логина второе для пароля) и кнопка но мало того нужно подготовить базу что бы после удачного ввода стали доступны объекты (таблицы, формы.....) увы как это сделать сейчас не вспомню т.к. акса на данное время нету тут и на пальцах показать не получится
Жаль((очень....
revaldo666 вне форума Ответить с цитированием
Старый 10.12.2010, 17:54   #6
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте revaldo666.
"..сделать форму авторизации пользователя.." - совсем не сложно с помощью конструктора.
логика и код могут быть такими:
Информация о зарегистрированных пользователях хранится в таблице БД, при открытии БД и запуске стартовой формы пользователь должен ввести имя и пароль.
После неудачного прохождения проверки форма и БД закрываются.
на форме -"..2 поля для ввода .. и кнопка..", поручите кнопке выполнение подобного кода:
Код:
Private Sub Кнопка0_Click()
Const sQ = "select * from tblUsers where sName = '", sQ2 = "' and sPWD = '"
Dim d As DAO.Database, r As DAO.Recordset, s1$, s2$
s1 = Поле1 & "" 'чтение поля с именем
s2 = Поле2 & "" 'чтение поля с паролем
If Len(s1) * Len(s2) = 0 Then Exit Sub 'не введены учетные данные
Set d = CurrentDb
Set r = d.OpenRecordset(sQ + s1 + sQ2 + s2 + "'")
If r.EOF Then 'записей с введенными данными нет
    DoCmd.Quit 'покидаем (закрываем) MS Access
End If
r.Close
Set r = Nothing: Set d = Nothing
End Sub
надеюсь у Вас всё получится.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 10.12.2010, 22:48   #7
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
Здравствуйте revaldo666.
"..сделать форму авторизации пользователя.." - совсем не сложно с помощью конструктора.
логика и код могут быть такими:
Информация о зарегистрированных пользователях хранится в таблице БД, при открытии БД и запуске стартовой формы пользователь должен ввести имя и пароль.
После неудачного прохождения проверки форма и БД закрываются.
на форме -"..2 поля для ввода .. и кнопка..", поручите кнопке выполнение подобного кода:
Код:
Private Sub Кнопка0_Click()
Const sQ = "select * from tblUsers where sName = '", sQ2 = "' and sPWD = '"
Dim d As DAO.Database, r As DAO.Recordset, s1$, s2$
s1 = Поле1 & "" 'чтение поля с именем
s2 = Поле2 & "" 'чтение поля с паролем
If Len(s1) * Len(s2) = 0 Then Exit Sub 'не введены учетные данные
Set d = CurrentDb
Set r = d.OpenRecordset(sQ + s1 + sQ2 + s2 + "'")
If r.EOF Then 'записей с введенными данными нет
    DoCmd.Quit 'покидаем (закрываем) MS Access
End If
r.Close
Set r = Nothing: Set d = Nothing
End Sub
надеюсь у Вас всё получится.
Евгений.
Спасибо Евгений.Щас буду пробовать


Как я понял по данному примеру должна быть таблица с именем tblUsers с полями sName и sPWD?

Последний раз редактировалось revaldo666; 11.12.2010 в 02:18.
revaldo666 вне форума Ответить с цитированием
Старый 11.12.2010, 22:34   #8
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

По данному примеру создал форму с названием pass и поместил на неё 2 поля и кнопку.К кнопке прописал вышестоящий код.
Также создал таблицу tblUsers и в ней 2 поля sUser и sPWD в них забил лагин и пароль.
Потом запустил форму ввёл в поля логин и пароль и при нажатии на кнопку вылетает ошибка.
compile error:
User-defined type not defined.
Подскажите что не так сделал?
revaldo666 вне форума Ответить с цитированием
Старый 11.12.2010, 23:40   #9
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте revaldo666.
"..что не так сделал? .." не верно написал "забил логин"
и ещё, сообщение User-defined type not defined. (Определяемый пользователем тип не определен) говорит о том, что не подключена к проекту библиотека, на тип данных которой есть ссылка в проекте.
В редакторе VBA, меню Tools / References..., подключите к проекту библиотеку DAO 3.6.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 12.12.2010, 00:08   #10
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

Спасибо Евгений.Всё работает.
Вот только последний вопрос.
Как сделать чтоб после нажатия кнопки и соотвецтвия логина и пароля открывалась форма с названием General
revaldo666 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции пользователя warder Помощь студентам 2 30.11.2010 18:53
авторизация и распознавание пользователя МаМи Microsoft Office Access 3 27.03.2010 21:03
Создание пользователя 4sense Общие вопросы Delphi 5 11.11.2009 20:04
интерфейс пользователя в С++ Nadezhda Помощь студентам 0 08.04.2009 17:58
Права пользователя Zloy_Doomer Операционные системы общие вопросы 5 18.12.2008 17:11