Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Разработка корпоративных приложений в Access 2002 - Литвин П.

Литвин П. Разработка корпоративных приложений в Access 2002 — Спб.: Питер, 2002. — 848 c.
ISBN 5-314-00181-0
Скачать (прямая ссылка): razrabotkaprilojeniy2002.djvu
Предыдущая << 1 .. 138 139 140 141 142 143 < 144 > 145 146 147 148 149 150 .. 357 >> Следующая

Листинг 8.36
Sub SetUserReadCustomersADOX(strUser As String. fRead As Boolean)
' Демонстрирует синтаксис ADOX для ' установки или удаления конкретного разрешения.
352
Глава 8"Защита приложений
' Устанавливает или удаляет разрешение:
Объект - tbICustomer Разрешение - adRightRead
Dim cat As ADOX.Catalog
Set cat - New ADOX.Catalog
cat.ActiveConnection - CurrentProject.Connection
If fRead Then cat.Users(strUser).SetPermissions "tbICustomer".
adPermObjTable, adAccessGrant. adRightRead
Else
cat.Users(strUser).SetPermissions "tbICustomer", adPermObjTable. adAccessDeny. adRightRead
End If
Set cat - Nothing End Sub
Если значение второго передаваемого процедуре SetUserReadCustomersADOX аргумента равно True, она вызовет метод SetPermissions с параметром adAccessGrant, в результате чего к существующему набору разрешений пользователя на таблицу tbICustomer будет добавлено право adRightRead. Например:
Call SetUserReadCustomersADOX. "Peter". True
Если же значение второго передаваемого процедуре SetUserReadCustomersADOX аргумента равно False, методу SetPermissions будет передан аргумент action со значением adAccessDeny, и право adRightRead на таблицу tbICustomer будет удалено из набора разрешений пользователя:
Call SetUserReadCustomersADOX. "Peter", False
Второй аргумент метода SetPermissions (objecttype) определяет тип объекта, для которого вы хотите изменить разрешения на доступ. В случае таблиц и запросов этому аргументу присваивается значение adPermObjTable. В методе SetPermissions предусмотрена возможность установки разрешений на объекты, специфические для конкретного поставщика. При работе с поставщиком Jet такими объектами считаются формы, отчеты и макросы. Для установки прав на объект, специфический для конкретного источника, аргументу objecttype присваивается значение adPermObjProviderSpeci fi с, а аргументу ObjectTypelD - значение GUID, идентифицирующее этот объект. Аргумент ObjectTypelD имеется и у метода GetPermissions. Его значения для объектов Access перечислены в табл. 8.8.
Таблица 8.8. GUID объектов Access, которые передаются методам SetPermissions
и GetPermissions в параметре ObjectTypelD, и соответствующие константы из модуля basSecurityExamplesADOX
Объект Access Константа из модуля basSecurityExamplesADOX Значение аргумента ObjectTypelD Форма
Отчет
Макрос JET_SECURITY_FORMS JET_SECURTTY_RE PORTS JET_SECURrTY_MACROS {o49c842e-9dcb-l Id l-9f0a-00c04fc2c2e0> {c49c8430-9dcb-lldl-9f0a-00c04fc2c2e0> {c49c842f-9dcb-1 Id l-9f0a-00c04fc2c2e0> В разделе объявлений модуля basSecurityExamplesADOX мы определили три константы GUID объектов Access. Процедура SetUserExecFormADOX из того же модуля,
Управление защитой с помощью ADOX
353
приведенная в листинге 8.37, показывает, как ими пользоваться. К сожалению, из-за ошибки в Jet OLE DB Provider для ADOX 2.x разрешения на объекты Access устанавливаются некорректно.
Листинг 8.37
Public Const JET_SECURITY_FORMS - _
'{с49с842е-9dcb-lldl-9f0a-00c04fc2c2e0}"
Sub SetUserExecFormADOX(strUser As String. fExec As Boolean)
' Демонстрирует синтаксис ADOX для установки ' разрешения на открытие формы.
Dim cat As ADOX.Catalog
Set cat - New ADDX.Catalog cat.ActiveConnection - CurrentProject.Connection
1 Примечание: Это доляно работать, но в AD0X 2.6
1 пока не функционирует. В будущих версиях AD0X данная
1 ошибка должна быть устранена.
If fExec Then
cat.Users(strUser).SetPermissions "frmCustomer". adPermObjProviderSpeclfic, adAccessGrant. adRIghtExecute, . JET SECURITY FORMS
Else
cat.Users(strUser).SetPermissions "frmCustonier", adPermObjProviderSpecific. adAccessDeny, adRightExecute. . JET_SECURITY_FORMS
End If
Set cat - Nothing End Sub
ВНИМАНИЕ
Ко времени выхода нашей книги из печати константы, определяющие специфические для провайдера объекты Access, неправильно интерпретировались из-за ошибки в Jet OLE DB Provider. Об этой ошибке упоминалось также в предыдущем издании, однако она не исправлена до сих пор. Кроме того, в связи с появлением ADO .NET очень маловероятно, что компания Microsoft выпустит новые пакеты обновлений для ADO или ADOX. Поэтому мы не надеемся, что эта ошибка когда-нибудь будет исправлена.
Установка разрешений на новые объекты с помощью ADOX
В ADOX установка разрешений на доступ к новым объектам также выполняется с применением метода SetPermissions. В качестве имени объекта этому методу передается пустая строка, а в аргументе ObjectType - тип контейнера объектов. Кроме того, четвертым аргументом (inherit) методу SetPermissions передается константа adlnheri tObjects. Например:
cat.Users("Anna").SetPermissions adPermObjTable.
adAccessGrant. adRightRead, adlnheritObjects
Процедура SetUserReadNewTablesADOX, приведенная в листинге 8.38, демонстрирует установку разрешений для новых таблиц.
354
Глава 8 • Защита приложений
Листинг 8.38
Sub SetUserReadNewTablesADDXCstrUser As String. fRead As Boolean)
' Демонстрирует синтаксис ADOX для ' установки разрешения на чтение в создаваемых таблицах.
Предыдущая << 1 .. 138 139 140 141 142 143 < 144 > 145 146 147 148 149 150 .. 357 >> Следующая