2013-12-19 1 views
3

Access 2010 mdb 데이터베이스에서 변환 한 Access 2010 accdb 데이터베이스가 있습니다.
Access 2003에서 다음 코드를 실행하면 기본적으로 ADODB - "Microsoft ActiveX Data Objects 2.5 Library"(msado25.tlb)에 대한 참조가있는 데이터베이스가 만들어집니다. 내가 액세스 2010 년에 다음과 같은 (비슷한) 코드를 실행하면vba를 사용하여 다른 Access 2010 데이터베이스의 adodb에 대한 참조를 수정하는 방법

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

, 그것은 성공적에만 적용 데이터베이스를 작성하지만, 위와 ADODB 라이브러리에 대한 참조가 없습니다. http://allenbrowne.com/ser-38.html

그래서 내가 필요로 내 새로 만든 :

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

다음 링크에 따르면, 기본 참조는 새 데이터베이스 액세스의 다양한 버전을 통해 다시 DAO와 ADODB 사이에 변경 만들 때 포함 데이터베이스에 ADODB에 대한 참조가 있습니다.

나는 현재 DB의 참조를 변경하는 방법을 알고

...

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"가 현재 열려있는 데이터베이스를 참조 할 것이라는 그릇된 생각에 매달 렸습니다. –