Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Юзеры и роли в Акцесс 2013 / 11 сообщений из 11, страница 1 из 1
24.10.2016, 12:02
    #39332632
Decabrist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юзеры и роли в Акцесс 2013
Подскажите пожалуйста как сделать разграничение по сабжу?
Какой-то супер защиты не требуется, просто отдельным пользователям надо дать доступ к формам только для чтения, что бы случайно чего не изменили (намеренное вредительство исключено). А в Акцесс 2013 вроде как все это дело почикали.
...
Рейтинг: 0 / 0
24.10.2016, 12:40
    #39332658
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юзеры и роли в Акцесс 2013
DecabristПодскажите пожалуйста как сделать разграничение по сабжу?
Какой-то супер защиты не требуется, просто отдельным пользователям надо дать доступ к формам только для чтения, что бы случайно чего не изменили (намеренное вредительство исключено). А в Акцесс 2013 вроде как все это дело почикали.
Заведите таблицу "Пользователи" и "Группы"
В таблице "Группы" заведите Администратор Пользователь1 Пользователь2 и т.д.
и в зависимости от группы раздавайте права на Формы,отчеты, Запросы и т.д.
Вот в краце как то так.
...
Рейтинг: 0 / 0
24.10.2016, 12:42
    #39332660
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юзеры и роли в Акцесс 2013
Если сильно защищать не надо, сделайте простую формочку для логина имя-пароль, в таблице поставьте уровень доступа каждого пользователя, а в форме, которую нужно защитить проверяйте уровень доступа и выставляйте AllowEdit в зависимости от этого.

Можно и без пароля, просто в таблице поставьте уровень доступа в соответствие имени пользователя, под которым он логинится в операционную систему и получайте его функцией Environ("Username")
...
Рейтинг: 0 / 0
24.10.2016, 12:48
    #39332668
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юзеры и роли в Акцесс 2013
Decabristотдельным пользователям надо дать доступ к формам только для чтенияОтдельные пользователи - это определённые учётные записи сервиса каталога или просто определённые тела?
...
Рейтинг: 0 / 0
25.10.2016, 03:27
    #39333203
Decabrist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юзеры и роли в Акцесс 2013
Это какую-то глобальную переменную надо задавать в системе?
Т.е. делаю две таблицы. Юзвери и Группы. На запуск базы открывается форма с вводом логина и пароля. После ввода ИД юзера запоминается в переменной и разграничение производится по этой переменной и заданной группы пользователя?
...
Рейтинг: 0 / 0
25.10.2016, 03:40
    #39333204
Decabrist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юзеры и роли в Акцесс 2013
AkinaDecabristотдельным пользователям надо дать доступ к формам только для чтенияОтдельные пользователи - это определённые учётные записи сервиса каталога или просто определённые тела?

Это конкретные люди. Вообще можно было бы упрощенно обойтись двумя пользователями. Какой-нибудь админ - с правами редактирования. И юзверь - с доступом только для чтения.
Но может быть со временем понадобиться более расширенная версия, так что это лучше в группы вынести.
...
Рейтинг: 0 / 0
25.10.2016, 04:32
    #39333207
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юзеры и роли в Акцесс 2013
DecabristЭто какую-то глобальную переменную надо задавать в системе?
Т.е. делаю две таблицы. Юзвери и Группы. На запуск базы открывается форма с вводом логина и пароля. После ввода ИД юзера запоминается в переменной и разграничение производится по этой переменной и заданной группы пользователя?
Да, примерно так.
...
Рейтинг: 0 / 0
25.10.2016, 05:32
    #39333210
Decabrist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юзеры и роли в Акцесс 2013
Извиняюсь за возможно глупый вопрос, но как задать глобальную переменную на уровне всей базы?

Пока за незнанием сделал форму, которую после выбора просто скрываю, а потом думаю сделать так что бы все прочие формы считывали значения полей этой скрытой формы.
...
Рейтинг: 0 / 0
25.10.2016, 05:46
    #39333211
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юзеры и роли в Акцесс 2013
DecabristИзвиняюсь за возможно глупый вопрос, но как задать глобальную переменную на уровне всей базы?

Пока за незнанием сделал форму, которую после выбора просто скрываю, а потом думаю сделать так что бы все прочие формы считывали значения полей этой скрытой формы.
В 2010 есть замечательная глобальная TempVars называется.
В 2013 она наверно тоже есть.
...
Рейтинг: 0 / 0
25.10.2016, 06:01
    #39333212
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юзеры и роли в Акцесс 2013
Decabrist,
Просто объявите Public переменную в любом стандартном модуле, значение будет доступно отовсюду. У глобальных переменных, правда, есть неприятная особенность: они теряют свое значение в некоторых случаях. Например, если вы отредактируете определение любой глобальной функции или переменной, выполнение кода будет сброшено. Также это произойдет, если при возникновении необработанной ошибки будет нажата кнопка "остановить". В общем, правильно написанной программе при обычной эксплуатации это не грозит, но просто имейте это в виду при разработке.

Я, например, предпочитаю не использовать глобальные переменные, а использую вместо них публичные функции в стандартных модулях, данные же хранятся в статических переменных вместо глобальных. Эти переменные сохраняют значение между вызовами функций, а если произошел сброс, то значение переменной заново генерируется, что гарантирует и скорость работы, и всегда корректное возвращаемое значение. Вот, например, типичная функция такого вида:
Public Function GetPersonID(Optional blnReset As Boolean = False) As Long
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Function GetPersonID(Optional blnReset As Boolean = False) As Long
Dim strOSUser As String
Dim varRes As Variant
Static lngPersonID As Long

If lngPersonID = 0 Or blnReset Then
    'get data from db
    strOSUser = GetOSUserName()
    varRes = DLookup("PersonID", "tbl_Persons", "UserID='" & strOSUser & "'")
    If Nz(varRes, 0) = 0 Then
        MsgBox "Windows user '" & strOSUser & "' not registered in system"
        Exit Function
    End If
    lngPersonID = varRes
End If
GetPersonID = lngPersonID
End Function
...
Рейтинг: 0 / 0
25.10.2016, 06:11
    #39333215
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юзеры и роли в Акцесс 2013
ROIВ 2010 есть замечательная глобальная TempVars называется.
В 2013 она наверно тоже есть
Да, есть и в более старших.

Decabrist,
Забыл про эту возможность, спасибо ROI за напоминание. TempVars не сбрасывается при сбросе выполнения, вполне можно использовать, но лично я ее недолюбливаю из-за отсутствия типизации (это просто коллекция переменных Variant), невозможности выявления ошибок в имени переменной на этапе компиляции и также она несколько осложняет отладку.
Изначально она была предназначена для для макросов, которые я также не люблю и толком не знаю :)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Юзеры и роли в Акцесс 2013 / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]