Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 11.01.2018, 23:04   #1
Shadow94
Пользователь
 
Аватар для Shadow94
 
Регистрация: 17.04.2011
Адрес: Иваново
Сообщений: 18
Репутация: 10
По умолчанию Считывание разрешений из 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 вне форума   Ответить с цитированием
Старый 17.01.2018, 00:06   #2
Shadow94
Пользователь
 
Аватар для Shadow94
 
Регистрация: 17.04.2011
Адрес: Иваново
Сообщений: 18
Репутация: 10
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пк часто прекращает работу при запуске Microsoft Access(Версия Access 2010) coffinsoul Microsoft Office Access 5 21.02.2016 01: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 13:14


22:17.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru