Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Простая авторизация
 
 автор: Mottorr   (09.09.2009 в 17:20)   личное сообщение
 
 

Здравствуйте!
Решил написать авторизацию для базы.
В базе есть таблица Users с полями:
uID - айдишник юзера
uLogin - логин юзера
uName - Полное име
uPass - пароль
uFlag - используеться/заблокирован

Стартовая форма имее два поля ,Логин и Пароль, и две кнопки, Вход и отмена.
При вводе логина и пароля по нажатию на кнопку вход должно сравниваться если такие в таблице и если есть запускать рабочую форму. Вот только Как написать программу незнаю.
ПОдскажите пожалуйста

  Ответить  
 
 автор: ShadowOfSun   (09.09.2009 в 19:14)   личное сообщение
 
 

Пример правильно организованной защиты
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

  Ответить  
 
 автор: Krez   (10.09.2009 в 00:44)   личное сообщение
 
 

А куда надо вписать макрос

  Ответить  
 
 автор: Анатолий (Киев)   (09.09.2009 в 19:43)   личное сообщение
 
 

Я бы заменил поле "Логин" на поле со списком (ПС). В источнике запрос, возвращающий два поля из таблицы. "Логин" - видимый, связанный столбец, и "Пароль" - скрытый. Можно добавить и 3-й (видимый) столбец - "Полное имя"
Выбираете из списка логин, а после ввода пароля, на AfterUpdate поля сверяете пароль со значением в ПС.Column(1) (выбранная строка, 2-й столбец)

  Ответить  
 
 автор: Krez   (10.09.2009 в 00:47)   личное сообщение
 
 

Заменил поле на (ПС) из списка в форме меняю фамилии а они не остаются в место них пишется #Имя? что делать не пойму.
Что надо сделать чтобы при открытии базы форма старт была первой?

  Ответить  
 
 автор: kot_k_k   (10.09.2009 в 08:28)   личное сообщение
 
 

Настройка-Параметры запуска-Вывод формы/страницы.
там ставишь свою форму, на форме задать режим диалог и при простом закрытии формы - Закрытие базы.
Еще бы запретить режим конструктора, и прочие вольности.
Смотри галочки на этом же окне - "Параметры запуска"

  Ответить  
 
 автор: Krez   (11.09.2009 в 00:41)   личное сообщение
 
 

Не могу найти где эта настройка в каком углу программы искать Заранее благодарю.

  Ответить  
 
 автор: Mottorr   (14.09.2009 в 17:51)   личное сообщение
 
 

Сервис - параметры запуска. в ПС Выбр формы/страницы указываешь свою форму, которая будет запускаться первой

  Ответить  
 
 автор: Mottorr   (10.09.2009 в 16:55)   личное сообщение
 
 

Вот что я искал, может комуто пригодиться:


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

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList