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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Многопользовательский режим работы в access 2003
 
 автор: Женя1999   (15.09.2009 в 13:02)   личное сообщение
 
 

Здравствуйте!!!

Здесь 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 будет.

  Ответить  
 
 автор: FORMAT   (15.09.2009 в 14:38)   личное сообщение
 
 


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

'действие если логин и пароль совпадают

End If


В выделенном фрагменте с помощью select case перебираете пользователей и открываете соответствующие формы

  Ответить  
 
 автор: FORMAT   (15.09.2009 в 14:46)   личное сообщение
 
 

Вааще-то я бы сделал следующим образом.
Кроме пользователей ввести еще и роли ( Админ, юзер, офигенный юзер и т.д. ). При регистрации нового пользователя ему присваивается определенна роль ( чита права). На открытие формы проверять роль пользователя. К форме могут иметь доступ как пользователи только определенной роли, так и нескольких ролей.Если нет доступа - редирект на другую форму.
Удобство - пользователей может быть хоть мильен, а ролей всего несколько. При увеличении числа пользователей не нужно переписывать коды форм ( вносить изменения на право пользования формой нового юзера)

  Ответить  
 
 автор: Женя1999   (16.09.2009 в 09:51)   личное сообщение
 
 

спасибо, тебе огромное за идею, но я пока слаб в VBA. мне чеб по проще, наверное кейзом проще будет сделать. а на счет ролей конечно классно...но пока не по моим зубам

  Ответить  
 
 автор: Женя1999   (16.09.2009 в 09:56)   личное сообщение
 
 

я конечно понимаю, что я хитрый...но нет ли у кого-нибуть "заглушки" этого программного кода. Может кто поделиться?

  Ответить  
 
 автор: Женя1999   (16.09.2009 в 16:04)   личное сообщение
 
 

Уважаемый, FORMAT, к тебе вопросик...
Я решил пока сделать ифами... пусть будет только два пользователя (пока)
Смотри...вписываю такой код, но у меня не правильно проверяется условие

If (Forms("Старт").Controls("Login") = "[uLogin]'") Then
MsgBox "Зашел User1" 'в дальнейшем будем выводить форму
Else
MsgBox "Зашел User2"
End If

... и вообще вопрос, как синтаксически правильно обратиться к значению столбца таблицы по индексу?

  Ответить  
 
 автор: Lukas   (16.09.2009 в 16:20)   личное сообщение
 
 

Здесь есть простой шаблон авторизации на две роли пользователей:
http://www.hiprog.com/forum/read.php?id_forum=1&id_theme=4375&page=3

  Ответить  
 
 автор: FORMAT   (16.09.2009 в 16:52)   личное сообщение
 
 


ник: Lukas
Здесь есть простой шаблон авторизации на две роли пользователей:
http://www.hiprog.com/forum/read.php?id_forum=1&id_theme=4375&page=3



Совсем забыл акс. Только с пятого раза получилось добраться до кодов в твоем примере
А мож просто туплю

  Ответить  
 
 автор: Lukas   (16.09.2009 в 16:59)   личное сообщение
 
 


Во, а ты то там что искал?

  Ответить  
 
 автор: FORMAT   (16.09.2009 в 17:04)   личное сообщение
 
 

банальное любопытство

  Ответить  
 
 автор: FORMAT   (16.09.2009 в 16:50)   личное сообщение
 
 

Тут нужно создать рекордсет таблицы с логинами и паролями. Затем пробегаемся по рекордсету и сравниваем значения из рекордсета со значением введенным в полях логин и пароль. Если есть четкое совпадение паролей и логинов в рекордсете и полях, входим на форму. Если нет - посылаем нах.
На пальцах сложно объяснить. Прикрепи то, что сделал. на твоем примере покажу.

  Ответить  
 
 автор: FORMAT   (16.09.2009 в 17:50)   личное сообщение
14 Кб.
 
 

Вот пример
Там User1 password 11111
User2 password 22222

  Ответить  
 
 автор: Женя1999   (17.09.2009 в 08:20)   личное сообщение
15 Кб.
 
 

Спасиб, за ответы!
Т.е. у меня сейчас открывается одна и та же форма, не зависимо кем заходим
Понимаю, что я не указываю индекс таблицы.....

  Ответить  
 
 автор: ShadowOfSun   (17.09.2009 в 17:17)   личное сообщение
 
 

Так работает

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


  Ответить  
 
 автор: FORMAT   (17.09.2009 в 17:35)   личное сообщение
19 Кб.
 
 

Или так тоже работает

  Ответить  
 
 автор: Mottorr   (17.09.2009 в 18:59)   личное сообщение
 
 

Открываеться одна форма. но есть следующие приколы:
1. База многопользовательская и при постановке задачи на ее разработку была еще задача знать кто из пользоватлей в данный момент работает в базе, для этого в таблице юзеров есть еще логическое поле "uFlag " и идентификатор роли в базе "rID" из таблицы Rules в которой описаны и распределены все права
2. При открытии главной формы (на которой находиться подчиненная форма и то какая форма будет отображаться задаеться прграмно при нажатии кнопкина панели инструментов, которая создана тож ена этой форме) в соответствующие поля (которые находяться внизу формы) задаються значения uName и роль в базе rName.
3. Ставим на событие "Открытие формы" процедуру которая проверяет имеет ли группа юзеров, к которой относиться текущий, право на то или иное действие и соответственно та или иная кнопка дизейблиться, вот и все.

Правда процедуру еще не написал, руки не доходят

  Ответить  
 
 автор: Женя1999   (18.09.2009 в 13:13)   личное сообщение
 
 

Огромное спасибо всем за ответы!!! Дальше буду разбираться сам

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