2011-04-28 54 views
20

Class does not support Automation or does not support expected interface如果我編譯Win7上一個VB6應用程序,具有「類不支持自動化或不支持預期的接口」 ADODB.Connection錯誤

我編我的X64 Win7的機器,結果一些VB6代碼的.exe將無法在任何其他機器上正確運行。

VB6代碼只是一個按鈕,一個新的模板.exe文件,引用「Microsoft ActiveX數據對象2.6庫」,並在按鈕按下事件下面的代碼:

Dim db 
Set db = New ADODB.Connection 

它運行在正確我的機器,但沒有其他人(甚至其他Win7 x64機器)(更新:我發現兩個其他用戶在哪裏運行,其中一個是傑夫阿特伍德,但大多數機器有同樣的問題)

我檢查參考屏幕在兩臺機器上查看引用是否失敗(它不會編譯然後編譯好)。一切看起來合法。在64位機器上,引用進入SysWow64而不是system32。

我甚至已經在Vista 64位機器上成功編譯過,並且運行正常。它只是在Windows 7上進行編譯,然後在錯誤發生的任何其他機器上運行。

這裏是我的機器上運行CompChecker結果:

comp checker results on box

註冊信息:ADODB.Connection具有GUID HKEY_CLASSES_ROOT \ CLSID {} 00000514-0000-0010-8000-00AA006D2EA4

InprocServer32 is%CommonProgramFiles%\ System \ ado \ msado15.dll

+4

我有完全相同的問題。這用於工作,必須是MS更新或其他東西! – 2011-05-04 13:44:23

+2

@Mark給這個問題upvote然後! – 2011-05-04 14:59:10

+0

奇怪的是,它可以在Vista上運行,而不是在Windows 7上運行。你是否嘗試在禁用UAC的情況下運行它,或者使用明確的「以管理員身份運行」運行? – 2011-05-04 21:46:18

回答

19

這是一個Windows 7 SP1問題。有關解決方法,請參閱http://support.microsoft.com/kb/2517589

這種情況有解決其他方面:

  1. 使用ADO 2.8,而不是(從Win 7的RTM 盤)
  2. 使用後期綁定(可能是 最簡單)
  3. 有100萬的事情這 人正試圖在這個很長的 和憤怒螺紋:Breaking change in MDAC ADODB COM components in Windows 7 Service Pack 1

另外,x64 Win 7不支持msado15.dll,如下所列:http://support.microsoft.com/kb/983246。這是一個很大的頁面,只需搜索msado15.dll

+0

太棒了。我使用backcompat.tlb解決方案在Windows 7機器上進行編譯,因爲代碼中有太多的早期綁定引用將它們更改爲遲綁定。 – 2011-05-11 19:11:59

+0

@邁克爾普賴爾:很高興聽到這個問題解決了!那麼美麗的賞金怎麼樣? :) – 2011-05-11 19:58:57

+1

不能這樣做。必須等待一個小時(自開始賞金起,必須等待24小時)。如果我忘記了,系統會自動獲取它。 – 2011-05-11 20:23:05

1

檢查出兩臺計算機上的MDAC組件的版本使用this tool

另外要確保你使用的是相同的SQL Server(猜測)版本的數據庫,因爲我注意到的SQL Server 2008 x64的工程型動物比以前的版本處理連接(使用VB6時)

+0

我給這個問題增加了一些細節。 – 2011-05-10 17:41:09

相關問題