2013-12-25 4 views
1

У меня есть база данных, построенная с нуля с использованием MS Access 2007 с VBA, которая запускает все скрипты (SQL, проверка данных и т. Д.) Между формами, отчетами и таблицами данных. Я пытаюсь установить систему доступа пользователей на целевую страницу базы данных. Пользователи могут быть 1 из 3 групп, администратор (вводит системные настройки, управление пользователями), офицера (данные сообщений) или менеджера (данные просмотра). пользователей связаны с таблицей группы пользователей, которая имеет следующее:Контроль доступа с использованием прав и групп пользователей

ID UserGroupDescription HideOps HideAdmin HideManager 
1  Administrator   TRUE FALSE  TRUE 
2  Operations   FALSE TRUE  TRUE 
3  Manager    TRUE TRUE  FALSE 

Я хотел бы показать каждую группу только их ярлык (используя .Visible свойство а лейбла) на целевую страницу, но я застрял на том, как управлять поиском этих данных без жесткого кодирования 3-х групп только в случае case (это означает, что у меня есть код добавления каких-либо дополнительных групп).
Есть ли способ сделать проверку ярлыка динамическим? при использовании подхода группы пользователей sql.

+0

Предложения о том, как это сделать лучше, высоко ценятся. В настоящее время я не использую собственные функции MS Access. Vba – Avagut

+0

@HansUp У меня есть таблица пользователей, и у нее есть идентификатор группы сопоставленных пользователей, при входе идентификатор пользователя и идентификатор группы пользователей помещаются в темп-вары, которые загружаются на посадку открытие страницы – Avagut

+0

Хорошо. В событии Form Load формы формы целевой страницы откройте «DAO.Recordset» на основе запроса таблицы user_group. Затем используйте значения HideOps, HideAdmin и HideManager набора записей, чтобы настроить видимые свойства этих элементов управления формой. Все ли это имеет смысл? Если нет, где ваша первая точка прилипания? – HansUp

ответ

0

В форме загрузки формы формы целевой страницы откройте файл DAO.Recordset на основе запроса таблицы user_group. Затем используйте значения записей HideOps, HideAdmin и HideManager, чтобы настроить видимые свойства этих элементов формы.

1

Я пошел с сокрытием всех несанкционированных частей, используя большую метку для каждой группы (lblHideAdmin & lblHideOps) :-). Мне удалось передать группу пользователей после входа в систему, используя переменную TempVar, и она загружается в начале загрузки страницы.
Параметр hide hide/show затем вытягивается с помощью dlookup, как показано ниже.

UserGroupId = TempVars![UserGroupId] 
Me.lblHideAdmin.Visible = True 
Me.lblHideOps.Visible = True 

OpStatus = True 
OpStatus = DLookup("[hideops]", "tblUserGroupDetails", "Id = " & UserGroupId) 
Me.lblHideOps.Visible = OpStatus 

AdminStatus = True 
AdminStatus = DLookup("[HideAdmin]", "tblUserGroupDetails", "Id = " & UserGroupId) 
Me.lblHideAdmin.Visible = AdminStatus 
Смежные вопросы