2012-02-16 11 views
1

私のアプリケーションでADOに問題があります。 Win7Proを使用しているコンピュータにAccessがインストールされていますが、そこには両方のバージョン(ACCDBとACCDE)を使用できます。しかし、ACCDBのみWinXPMode環境で実行時に(SP1で)動作します。アクセスWindows XPモードのADO(ADDE形式)

ありコードACCDEで

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 
... 

(XPMode上のランタイム下)です: =行の設定Cnxnメッセージエラー13返しCurrentProject.AccessConnection:型の不一致を。

私はADO 2.8を参照しています。

Debug.Print CurrentProject.AccessConnection:Provider = Microsoft.Access.OLEDB.10.0;セキュリティ情報を維持する= False;データソース= C:\ Work \ SkladII \ Sklad.accde;ユーザー= Admin;データプロバイダ= Microsoft sklad.accdeで.ACE.OLEDB.12.0

すべてのテーブルには、あなたがどんな考えを持っていますか、どこに問題がある

をリンクされていますか?

+0

両方のオブジェクトで同じエラーが発生しました – leoleu

答えて

1

この問題がWinXPModeのADOの初期バインディングに限定されているかどうかを調べます。 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

私は説明できません。私はちょうどWinXPModeのADO 2.8リファレンスで何かが正しくないと推測しました。遅いバインディングは、Access VBAが利用可能なバージョンを利用できるようにします---遅いバインディング時にバージョンの選択がどのように行われるかはわかりませんが。私はACCDBは、特定の参照バージョンが利用可能ではない/使用可能ではないときに調整することができると思います...しかし、あなたのコードはその場合再コンパイルできないため、ACCDEできません。とにかく、このような初期のバインディングの問題を避けるために、本番アプリケーションでは常にADOのレイトバインディングを使用します。それだけで私の人生は楽になります。 – HansUp

+0

あなたの答えと私の人生を楽にしてくれてありがとう) – leoleu

関連する問題