Нет разрешения на чтение «MSysObjects» (номер ошибки: -2147217911) при использовании Microsoft Excel VBA для запроса доступа только к файлам accdb — mdb работает нормально

Нет разрешения на чтение «MSysObjects» (номер ошибки: -2147217911) при использовании Microsoft Excel VBA для запроса доступа только к файлам accdb — mdb работает нормально

Использование Microsoft Excel VBA для запроса доступа.

С файлом mdb эта строка подключения отлично открывает файл mdb, и строка SQL возвращает нужные мне таблицы.

Connection String: Provider=Microsoft.Jet.OLEDB.4.0;Data Source = "C:\My Files\Word\ADA II Text\Chapters\9 -



8\Access\ADAIICH9TEST.mdb";User Id=admin;Password=;
SQL String: SELECT MSysObjects.Name From MSysObjects WHERE MSysObjects.Name Not Like "MSyS*" And Type=1 AND 

Flags=0 ORDER BY MSysObjects.Name;

С файлом accdb эта строка подключения отлично открывает файл accdb, но SQL выдает следующую ошибку:

№ ошибки: -2147217911 Описание ошибки: запись(и) не может быть прочитана; нет разрешения на чтение «MSysObjects».

Почему он имеет доступ к MSysObjects при чтении файла mdb, но не имеет доступа к файлу accdb? Как предоставить доступ программно или из файла доступа?

Я уже пытался выполнить следующие операторы перед запуском SQL:

'cn.Execute "GRANT SELECT ON MSysObjects TO Admin;"
'cn.Execute "GRANT SELECT ON TABLE MSysObjects TO PUBLIC;"

Они выдают ошибку: Номер ошибки: -2147467259 Описание ошибки: не удается открыть информацию о рабочей группе ядра базы данных Microsoft Access.

файл.

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
489
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В Access вам нужно дать разрешение пользователю по умолчанию на доступ к таблице.

В ближайшем окне с доступом выполните

CurrentProject.Connection.Execute "GRANT SELECT ON MSysObjects TO Admin;"

И ваш SQL будет работать после этого.

Возможно, вы захотите изменить строку подключения. IIRC Jet не будет работать после Access 2003, поэтому попробуйте

Provider=Microsoft.ACE.OLEDB.12.0;Data Source = "C:\...ADAIICH9TEST.accdb;

СПАСИБО. Я запускал SQL в Excel для доступа, а не в доступе. Это была моя проблема. Вы сэкономили мне много времени.

ssabissett 29.05.2019 19:37

Другие вопросы по теме