Хобрук: Ваш путь к мастерству в программировании

Соединение OLEDB 12.0 совместимо как с Excel 2010, так и с Excel 2013.

Я пытаюсь подключиться к базе данных MS Access через Microsoft ACE OLEDB 12.0. Я хотел бы, чтобы он работал как в Excel 2010, так и в Excel 2013, чтобы конечный пользователь просто обновлял соединение для получения новых данных. Проблема в том, что Excel 2013 добавляет 2 свойства в строку подключения, что делает подключение непригодным для пользователя Excel 2010. Есть ли способ предотвратить их добавление в Excel 2013 или заставить Excel 2010 игнорировать их? Файл с подключением будет находиться на сетевом диске и будет использоваться пользователями Excel 2010 и 2013.

ЭКСЕЛЬ 2010:

Provider=Microsoft.ACE.OLEDB.12.0;
User ID=USER;
Data Source=path1.mdb;Mode=Read;
Extended Properties="";
Jet OLEDB:System database=path2.mdw;
Jet OLEDB:Registry Path="";
Jet OLEDB:Engine Type=5;
Jet OLEDB:Database Locking Mode=1;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False;
Jet OLEDB:Support Complex Data=False;
Jet OLEDB:Bypass UserInfo Validation=False

ЭКСЕЛЬ 2013:

Provider=Microsoft.ACE.OLEDB.12.0;
User ID=USER;
Data Source=path1.mdb;Mode=Read;
Extended Properties="";
Jet OLEDB:System database=path2.mdw;
Jet OLEDB:Registry Path="";
Jet OLEDB:Engine Type=5;
Jet OLEDB:Database Locking Mode=1;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False;
Jet OLEDB:Support Complex Data=False;
Jet OLEDB:Bypass UserInfo Validation=False;
Jet OLEDB:Limited DB Caching=False;
Jet OLEDB:Bypass ChoiceField Validation=False

Как видите, Excel 2013 добавляет еще 2 строки, что делает это соединение непригодным для использования. Я подумал о добавлении кода VBA для изменения строки подключения перед обновлением данных, но если есть способ не задействовать vba, это было бы здорово.

РЕДАКТИРОВАТЬ: при использовании в Excel 2010 с этими дополнительными строками Excel выдает ошибку «Не удалось найти устанавливаемый ISAM».


  • Вы получаете сообщение об ошибке? Обычно эти строки не вызывают никаких проблем, они просто передаются в ядро ​​базы данных Access, и ваша установка Excel ни на что не должна влиять. 12.02.2019
  • при использовании в Excel 2010 с этими дополнительными строками, которые он дает. Не удалось найти устанавливаемую ошибку ISAM 12.02.2019
  • Как вы генерируете и применяете эти строки подключения? (Я бы подумал, что вы можете просто отредактировать и сохранить их.) 13.02.2019
  • Также стоит обратить внимание читателей на то, что вы используете базу данных форматов файлов Access 2003. 13.02.2019
  • Строка подключения @AndyG создается после завершения настройки подключения. В этом процессе я заполнил только поля User ID, Data Source и System database, для остальных установлены значения по умолчанию. Я знаю, что удаление этих дополнительных строк устраняет проблему, но это временно, когда пользователь Excel 2013 обновляет это соединение, он добавляет их снова. Как упоминалось в исходном сообщении, файл с подключением используется пользователями как E2010, так и E2013, поэтому каждый раз, когда E2010 будет использовать его после E2013, ему придется удалять эти строки из определения каждого из подключений. 13.02.2019

Ответы:


1

Не понимаю, как нельзя задействовать VBA.

Условно запустите 2 строки, если версия Excel подходит. Используйте Application.Version для определения версии Excel. Это возвращает 14.0 в Excel 2010. Я думаю, что Excel 2013 — это версия 15.0.

If Application.Version > 14 Then
    Jet OLEDB:Limited DB Caching=False;
    Jet OLEDB:Bypass ChoiceField Validation=False
End If
12.02.2019
Новые материалы

Как сделать HTML динамическим с помощью JavaScript
Код JavaScript выполняется внутри страниц сайта. Таким образом, страница вашего сайта содержит метки HTML, а также пояснения (скрипты), составленные с использованием диалекта сценариев, такого как..

Деревья классификации и регрессии
Это мой второй пост об алгоритмах машинного обучения. Мой первый пост посвящен искусственным нейронным сетям, вы можете найти его ниже. Нейронные сети — базовое..

HMTL - Многозадачное обучение для решения задач НЛП
Достижение результатов SOTA путем передачи знаний между задачами Область обработки естественного языка включает в себя десятки задач, среди которых машинный перевод, распознавание именованных..

Решения DBA Metrix
DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

Начало работы с Блум
Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..