2013-12-19 1 views
3

У меня есть база данных accdb Access 2010, которую я преобразовал из базы данных Access 2003 mdb.
Когда я запустил следующий код в Access 2003, он создаст базу данных, которая по умолчанию имела ссылку на ADODB - «Microsoft ActiveX Data Objects 2.5 Library» (msado25.tlb).Как изменить ссылку на adodb другой базы данных Access 2010 с помощью vba

Set dbNewApp = Application.DBEngine.CreateDatabase("Test.mdb", dbLangGeneral) 

Если я запускаю следующий (подобный) код в Access 2010, он успешно создает базу данных ACCDB, но нет ссылки на библиотеку ADODB, как указано выше.

Set dbNewApp = Application.DBEngine.CreateDatabase("Test.accdb", dbLangGeneral) 

По следующей ссылке, ссылки по умолчанию включены при создании новой базы данных изменились между DAO и ADODB и обратно по различным версиям Access: http://allenbrowne.com/ser-38.html

Так что мне нужно вновь созданные базы данных, чтобы иметь ссылку на ADODB.

Я знаю, как изменить ссылки текущего дб ...

Set refNew = References.AddFromGuid("{00000205-0000-0010-8000-00AA006D2EA4}", 2, 5) 

Но как мне это сделать в другую базу данных доступа, который я только что созданный с DBEngine.CreateDatabase?

+0

Возможно http://stackoverflow.com/questions/594239/how-to-add-remove-reference -programmatically/594475 # 594475 – Fionnuala

+0

Спасибо Remou. Но я думаю, что ответ относится к добавлению ссылок на текущую базу данных, а не на другую базу данных, которую мы только что создали из кода VBA. –

ответ

2

После того, как вы создали базу данных, она должна быть возможность открыть его и добавить ссылки:

Sub CreateDB() 
Dim acApp As Access.Application 
Dim dppath As String 

    dbpath = "z:\docs\newmsmdb.mdb" 
    ''http://msdn.microsoft.com/en-us/library/office/ff835033.aspx 
    CreateDatabase dbpath, dbLangGeneral, dbVersion40 

    ''http://msdn.microsoft.com/en-us/library/office/aa140509(v=office.10).aspx 
    Set acApp = New Access.Application 
    With acApp 
     .OpenCurrentDatabase dbpath 
     acApp.References.AddFromFile _ 
      "c:\program files\common files\system\ado\msado15.dll" 
    End With 
End Sub 
+0

Мне очень не нравится, что вам нужно создать новый экземпляр «Access.Application», чтобы сделать это, хотя, похоже, нет другого пути. +1 –

+0

Это отлично работает Remou, спасибо большое. Возможно, я столкнулся с чем-то подобным, но был замечен ложной мыслью, что «OpenCurrentDatabase» будет ссылаться на открытую вами базу данных. –

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

  • Нет связанных вопросов^_^