2013-09-11 1 views
0

Я пытаюсь добавить связанную таблицу в базу данных Acccess, используя ADO и ADOX (от excel).Невозможно изменить Link Datasource через ADO для формата accdb

Однако каждый раз, когда я пытаюсь, я получаю сообщение об ошибке: «Microsoft Access не поддерживает привязку к базе данных Access или Microsoft Office Excel, сохраненной в формате, который является более поздней версией, чем текущий формат базы данных».

Как связанная таблица, так и целевая база данных создаются с использованием Access 2010 и имеют формат .accdb. Мой код:

Set cat = New ADOX.Catalog 
    Set tbl = New ADOX.Table 

    ' Open the catalog. 
    cat.ActiveConnection = objConnection 

    tbl.ParentCatalog = cat 
    tbl.Name = "Promotions" 
    tbl.Properties("Jet OLEDB:Link Datasource") = strCurrentPath & _ 
     "LocPrcCh.accdb" 
    tbl.Properties("Jet OLEDB:Remote Table Name") = "Promotions" 
    tbl.Properties("Jet OLEDB:Create Link") = True 
    tbl.Properties("Jet OLEDB:Link Provider String") = _ 
     "MS Access;PWD=XXXXXXXXX;" 

    cat.Tables.Append tbl 

Возвращает ошибку после последней строки. Любые идеи, как сделать эту работу?

+0

Зачем использовать VBA для соединения таблиц из двух разных баз данных? – Trace

+0

Это решение, написанное на языке Excel, поскольку большинство пользователей не имеют доступа на своих компьютерах. В решении используются два основных источника данных: база данных Promotions (обновляется много раз в день) и большая база данных референций (которая обновляется раз в месяц), которые расположены на сервере. В excel создается локальная копия обеих баз данных на компьютере, на котором он запущен. Иногда ему нужно одновременно запускать запросы по таблицам из обеих баз данных, для этого я создаю базу данных со ссылками на таблицы для обеих локальных баз данных. И я запрашиваю эту объединенную базу данных. –

ответ

0

Решено.

У моего целевого файла было расширение .accdb, но оно не было в формате 2007 года. Когда он был открыт, он сказал, что это файл доступа формата 2002-2003.

Файл был создан в Access 2010, но формат был позже изменен. Я использовал функцию сжатия струйных устройств в другом месте моей программы, которая создала новую версию базы данных в более старом формате.

+0

Была аналогичная проблема. Самое сложное - выяснить формат базы данных. Я нашел эту статью [Wikipedia] (http://en.wikipedia.org/wiki/Microsoft_Jet_Database_Engine) полезной при определении того, какой формат MS Jet используется в версии MS Access. – LeftyMaus

Смежные вопросы