|
|
|
| Здравствуйте!
Решил написать авторизацию для базы.
В базе есть таблица Users с полями:
uID - айдишник юзера
uLogin - логин юзера
uName - Полное име
uPass - пароль
uFlag - используеться/заблокирован
Стартовая форма имее два поля ,Логин и Пароль, и две кнопки, Вход и отмена.
При вводе логина и пароля по нажатию на кнопку вход должно сравниваться если такие в таблице и если есть запускать рабочую форму. Вот только Как написать программу незнаю.
ПОдскажите пожалуйста | |
|
| |
|
|
|
| Пример правильно организованной защиты
http://hiprog.com/index.php?option=com_content&task=view&id=182&Itemid=35
пример детской защиты через определение логина пользователя (при включении компа )
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
|
| |
|
| |
|
|
|
| А куда надо вписать макрос | |
|
| |
|
|
|
| Я бы заменил поле "Логин" на поле со списком (ПС). В источнике запрос, возвращающий два поля из таблицы. "Логин" - видимый, связанный столбец, и "Пароль" - скрытый. Можно добавить и 3-й (видимый) столбец - "Полное имя"
Выбираете из списка логин, а после ввода пароля, на AfterUpdate поля сверяете пароль со значением в ПС.Column(1) (выбранная строка, 2-й столбец) | |
|
| |
|
|
|
| Заменил поле на (ПС) из списка в форме меняю фамилии а они не остаются в место них пишется #Имя? что делать не пойму.
Что надо сделать чтобы при открытии базы форма старт была первой? | |
|
| |
|
|
|
| Настройка-Параметры запуска-Вывод формы/страницы.
там ставишь свою форму, на форме задать режим диалог и при простом закрытии формы - Закрытие базы.
Еще бы запретить режим конструктора, и прочие вольности.
Смотри галочки на этом же окне - "Параметры запуска" | |
|
| |
|
|
|
| Не могу найти где эта настройка в каком углу программы искать Заранее благодарю. | |
|
| |
|
|
|
| Сервис - параметры запуска. в ПС Выбр формы/страницы указываешь свою форму, которая будет запускаться первой | |
|
| |
|
|
|
| Вот что я искал, может комуто пригодиться:
Result = DLookup("[uID]", "Users", "[uLogin]='" & Login & "' AND [uPass]='" &Pass & "'")
If IsNull(Result) Then
'действие если логин пароль не совпадают
Else
'действие если логин и пароль совпадают
End If
|
| |
|
| |