|
|
|
| Здравствуйте!!!
Здесь http://hiprog.com/forum/read.php?id_forum=1&id_theme=5744&page=1
мне понравилась одна вещь
Result = DLookup("[uID]", "Users", "[uLogin]='" & Login & "' AND [uPass]='" &Pass & "'")
If IsNull(Result) Then
'действие если логин пароль не совпадают
Else
'действие если логин и пароль совпадают
End If
У меня что-то типа такого же, но у меня несколько пользователей и при авторизации к их глазам я хочу подсунуть соответсвующю форму. Подскажите какое условие мне надо написать плиз!
Пользователей где-то около 4-5 будет. | |
|
| |
|
|
|
|
Result = DLookup("[uID]", "Users", "[uLogin]='" & Login & "' AND [uPass]='" &Pass & "'")
If IsNull(Result) Then
'действие если логин пароль не совпадают
Else
'действие если логин и пароль совпадают
End If
|
В выделенном фрагменте с помощью select case перебираете пользователей и открываете соответствующие формы | |
|
| |
|
|
|
| Вааще-то я бы сделал следующим образом.
Кроме пользователей ввести еще и роли ( Админ, юзер, офигенный юзер и т.д. ). При регистрации нового пользователя ему присваивается определенна роль ( чита права). На открытие формы проверять роль пользователя. К форме могут иметь доступ как пользователи только определенной роли, так и нескольких ролей.Если нет доступа - редирект на другую форму.
Удобство - пользователей может быть хоть мильен, а ролей всего несколько. При увеличении числа пользователей не нужно переписывать коды форм ( вносить изменения на право пользования формой нового юзера) | |
|
| |
|
|
|
| спасибо, тебе огромное за идею, но я пока слаб в VBA. мне чеб по проще, наверное кейзом проще будет сделать. а на счет ролей конечно классно...но пока не по моим зубам | |
|
| |
|
|
|
| я конечно понимаю, что я хитрый...но нет ли у кого-нибуть "заглушки" этого программного кода. Может кто поделиться? | |
|
| |
|
|
|
| Уважаемый, FORMAT, к тебе вопросик...
Я решил пока сделать ифами... пусть будет только два пользователя (пока)
Смотри...вписываю такой код, но у меня не правильно проверяется условие
If (Forms("Старт").Controls("Login") = "[uLogin]'") Then
MsgBox "Зашел User1" 'в дальнейшем будем выводить форму
Else
MsgBox "Зашел User2"
End If
... и вообще вопрос, как синтаксически правильно обратиться к значению столбца таблицы по индексу? | |
|
| |
|
|
|
|
|
|
Во, а ты то там что искал? | |
|
| |
|
|
|
|
| Тут нужно создать рекордсет таблицы с логинами и паролями. Затем пробегаемся по рекордсету и сравниваем значения из рекордсета со значением введенным в полях логин и пароль. Если есть четкое совпадение паролей и логинов в рекордсете и полях, входим на форму. Если нет - посылаем нах.
На пальцах сложно объяснить. Прикрепи то, что сделал. на твоем примере покажу. | |
|
| |
|
14 Кб. |
|
| Вот пример
Там User1 password 11111
User2 password 22222 | |
|
| |
|
15 Кб. |
|
| Спасиб, за ответы!
Т.е. у меня сейчас открывается одна и та же форма, не зависимо кем заходим
Понимаю, что я не указываю индекс таблицы..... | |
|
| |
|
|
|
| Так работает
Private Sub Кнопка4_Click()
Result = DLookup("[uID]", "Users", "[uLogin]='" & Login & "' AND [uPass]='" & Pass & "'")
If Not IsNull(Result) Then
Select Case (Forms("Старт").Controls("Login"))
Case "Гена"
DoCmd.OpenForm "Гена", acNormal
Case "Наташа"
DoCmd.OpenForm "Наташа", acNormal
End Select
Else
DoCmd.OpenForm "Нет", acNormal
End If
End Sub
|
| |
|
| |
|
19 Кб. |
|
| Или так тоже работает | |
|
| |
|
|
|
| Открываеться одна форма. но есть следующие приколы:
1. База многопользовательская и при постановке задачи на ее разработку была еще задача знать кто из пользоватлей в данный момент работает в базе, для этого в таблице юзеров есть еще логическое поле "uFlag " и идентификатор роли в базе "rID" из таблицы Rules в которой описаны и распределены все права
2. При открытии главной формы (на которой находиться подчиненная форма и то какая форма будет отображаться задаеться прграмно при нажатии кнопкина панели инструментов, которая создана тож ена этой форме) в соответствующие поля (которые находяться внизу формы) задаються значения uName и роль в базе rName.
3. Ставим на событие "Открытие формы" процедуру которая проверяет имеет ли группа юзеров, к которой относиться текущий, право на то или иное действие и соответственно та или иная кнопка дизейблиться, вот и все.
Правда процедуру еще не написал, руки не доходят | |
|
| |
|
|
|
| Огромное спасибо всем за ответы!!! Дальше буду разбираться сам | |
|
| |