Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2009, 14:07   #1
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
По умолчанию макрос на открытие базы

Как сделать, чтобы при открытии базы оператором из определенной группы появлялась одна форма, а при открытии оператором из другой группы - то другая форма.
ruavia3 вне форума Ответить с цитированием
Старый 27.08.2009, 16:11   #2
b00s
Форумчанин
 
Регистрация: 19.01.2008
Сообщений: 120
По умолчанию

насколько я знаю так не получится сделать.
b00s вне форума Ответить с цитированием
Старый 28.08.2009, 01:59   #3
ECrazy
 
Аватар для ECrazy
 
Регистрация: 27.08.2009
Сообщений: 4
По умолчанию

все не так страшно.
1. настраиваем многопользовательский доступ в аксесс. для начала - просто присвоим пароль пользователю Admin. Заводим дополнительных пользователей+их пароли.
2. для автозапуска можно использовать, например, макрос autoexec. в нем решаем, соответствует ли ИМЯ (логин) пользователя или его группа определенным критериям и запускаем нужныую форму.
самое интересное)
как получить имя пользователя:
Код:
Public Function ReadUserName() As String
'объявили переменные
Dim Dbs As Database, Doc As Document
'это - текущая бд 
Set Dbs = CurrentDb
Set Doc = Dbs.Containers("Databases")!UserDefined
 
ReadUserName = Doc.UserName
End Function
Timeo danaos et dona ferentes.

Последний раз редактировалось ECrazy; 28.08.2009 в 02:07.
ECrazy вне форума Ответить с цитированием
Старый 28.08.2009, 02:04   #4
ECrazy
 
Аватар для ECrazy
 
Регистрация: 27.08.2009
Сообщений: 4
По умолчанию

если есть желание узнать группу пользователя, вот вариант:
Код:
Public Function IsUserAdmin(AName As String) As Boolean
Dim Wsp As Workspace, Usr As User, Grp As Group

  Set Wsp = DBEngine.Workspaces(0)
  
  IsUserAdmin = False
  
  For Each Usr In Wsp.Users
    
   If (Usr.Name = AName) Then     'поиск пользователя
     For Each Grp In Usr.Groups 'поиск по группе
       'успешный поиск
       If (Grp.Name = "Admins") Then IsUserAdmin = True: GoTo IsUserAdminExit
     Next Grp
   End If
    
  Next Usr
IsUserAdminExit:
  Exit Function  
End Function
строка:
Код:
Set Wsp = DBEngine.Workspaces(0)
аналогично присвоению переменной значения функции CurrentDB().
вместо группы Admins можно проверять любую или переписать функцию так, чтобы она тупо возвращала Название группы пользователя.
в Аксессе все просто!
Timeo danaos et dona ferentes.

Последний раз редактировалось ECrazy; 28.08.2009 в 02:09.
ECrazy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос постоянно обрабатывает события. При открытии другой книги макрос обрывается. Ples Microsoft Office Excel 8 17.12.2016 18:15
CppWEbBrowser. Запрет на открытие нового окна, и открытие его в том же окне Askar_g Общие вопросы C/C++ 4 25.06.2011 20:00
Открытие Базы, Перенос базы ke6ko БД в Delphi 1 10.07.2009 08:05
Открытие файла MS Word из базы данных Access. v_skull БД в Delphi 0 17.05.2009 17:08
Открытие(подключение) уже существующей базы данных MS Access через ADO Moel БД в Delphi 7 24.10.2007 16:57