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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2018, 22:04   #1
Shadow94
Пользователь
 
Аватар для Shadow94
 
Регистрация: 17.04.2011
Сообщений: 18
По умолчанию Считывание разрешений из Access в C#

Доброго времени суток!

Помогите, пожалуйста, мучаюсь уже неделю.
Есть немаленькая БД (MS Access 2000 .mdb) - 440 таблиц, есть 2 группы "Admins" и "Users" и пользователь "Admin", которому ограничили доступ к половине таблиц.

Подскажите, пожалуйста, каким образом можно считать разрешения для каждой таблицы?
И как получить список пользователей и групп, существующих в БД Access?

Некоторая информация от меня:
1) Подключаюсь к базе с помощью ADO (ADOX) и OleDb (приходится использовать класс OleDbDataAdapter и метод FillSchema для считывания схемы (структуры) таблиц).
2) строка подключения выглядит так:
Код:
"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=(путь к БД);
Jet OLEDB:Engine Type=5;
User ID=Admin;
Password="
Может следует добавить в нее
Код:
Jet OLEDB:System Database=|DataDirectory|\System.mdw;
?
Ведь, насколько я понимаю, пользователи и группы входят в рабочую группу. Напоминаю, MS Access 2000.

3) Разрешения для каждой таблицы пытаюсь получить так:

Код:
ADOX.Catalog BD = new ADOX.Catalog();
ADODB.Connection con = new Connection();
con.Open(dataConnectionString, "Admin", "", 0);
BD.ActiveConnection = con;

//потабличный цикл
{
   try
   {
      var perm = BD.Users["Admin"].GetPermissions(currentTableName, ObjectTypeEnum.adPermObjTable);
   }
   catch 
   {
      //пишем ошибку в файл с логами
   }
}
4) При любом обращении к BD.Users генерируется исключение COM Exception "Object or provider is not capable of performing requested operation". Оно также генерируется при попытке добавить пользователя методом Append, при попытке хотя бы считать количество пользователей с помощью свойства Count и даже в следующем случае:

Код:
ADOX.User user = new User();
user = BD.Users["Admin"];
Причем с помощью ADOX таблицы считываются корректно, проблема только в ADOX.Catalog.Users и ADOX.Catalog.Groups.
Подскажите, пожалуйста, что я делаю не так и в чем может быть причина Exception. Заранее спасибо!
Shadow94 вне форума Ответить с цитированием
Старый 16.01.2018, 23:06   #2
Shadow94
Пользователь
 
Аватар для Shadow94
 
Регистрация: 17.04.2011
Сообщений: 18
По умолчанию

Помогите, пожалуйста! Нужна хоть какая-то помощь, мысль и т.д.

Каким образом вообще можно считать разрешения на таблицы из Access 2000?
DAO вроде не подходит, SQL тоже, остается только ADOX.Catalog.GetPermissions или OleDbPermission, но ничего не получается
Shadow94 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пк часто прекращает работу при запуске Microsoft Access(Версия Access 2010) coffinsoul Microsoft Office Access 5 21.02.2016 00:12
Переписывание файла adp под Access 2007 или Access 2010 Анатолий_2014 Microsoft Office Access 1 02.09.2014 20:12
Как открыть базу данных Access, без самой Access? Анна-22 Microsoft Office Access 6 30.05.2013 19:19
Delphy и Access.вводя инфу во вторичный файл Access, она отражалась в первом ADOTable Lev БД в Delphi 0 11.11.2007 12:14