2012-02-16 1 views
1

У меня проблема с ADO в Моем приложении. У меня есть Access, установленный на моем компьютере с Win7Pro, и там я могу использовать обе версии (ACCDB и ACCDE). Но только ACCDB работает во время выполнения (с SP1) в среде WinXPMode.Access 2010 ADO в режиме Windows XP (в формате ADDE)

Существует Кодекса

Dim strSQL As String, Cnxn As ADODB.Connection, Rsxn As ADODB.Recordset 
Dim lngDummy As Long 
lngCount = DCount("[Sklad]", "cisSklad", "[Zobrazit]") 
CountData = lngCount 
If CountData = 0 Then Exit Sub 
ReDim ItemValues(lngCount - 1) 
Set Cnxn = CurrentProject.AccessConnection 
Set Rsxn = New ADODB.Recordset 
... 

В ACCDE (при RunTime на XPMode): Строка Set CnXn = CurrentProject.AccessConnection возвращает сообщение об ошибке 13: несоответствие типов.

У меня есть ссылка на ADO 2.8.

Debug.Print CurrentProject.AccessConnection: Provider = Microsoft.Access.OLEDB.10.0; Persist Security Info = False; Источник данных = C: \ Work \ SkladII \ Sklad.accde; User = Admin; поставщик данных = Microsoft .ACE.OLEDB.12.0

Все таблицы sklad.accde связаны

у вас есть какие-либо идеи, где проблема?

+0

Такая же ошибка для обоих объектов – leoleu

ответ

1

Исследуйте, ограничивается ли этот вопрос ранним связыванием для ADO в WinXPMode. Удалите ссылку для ADO и пересмотрите свой код, чтобы использовать позднюю привязку.

Dim strSQL As String, Cnxn As Object, Rsxn As Object 
Set Cnxn = CurrentProject.Connection 
'Set Rsxn = New ADODB.Recordset 
Set Rsxn = CreateObject("ADODB.Recordset") 
+0

Хм, это работает. Не могли бы вы объяснить мне почему? – leoleu

+0

Не могу объяснить. Я просто предположил, что что-то не так с ссылкой ADO 2.8 в WinXPMode. Позднее связывание позволит Access VBA использовать доступную версию --- хотя я понятия не имею, как делается выбор версии при позднем связывании. Я думаю, ACCDB может настраиваться, когда конкретная ссылочная версия недоступна/используется ... но ACCDE не может, потому что ваш код не может быть повторно скомпилирован в этом случае. Во всяком случае, я всегда использую позднюю привязку для ADO в производственных приложениях, чтобы избежать таких ранних проблем с привязкой; это просто облегчает мою жизнь. – HansUp

+0

Спасибо за ваш ответ и за облегчение моей жизни :) – leoleu

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