掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ADODBについて (ID:82151)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
# [解決]マークが付いていますが、一応ゴミレスを。 > それと、98はVB6SP4、2000はVB6SP5です。 可能な限り、SP5を適用してください。(そして、Windows 2000のSP4なども忘れずに) 例えば、VB6SP5を適用していなかった場合、以下のような問題が発生する可能性があります。 http://support.microsoft.com/default.aspx?scid=kb;ja;281887 > ADODBのヴァージョンは、2.53.6200.0です。 これは……[MDAC 2.5 Service Pack 3]ですよね。 VB6 SP3には[MDAC 2.1 SP1a]、VB6 SP4には[MDAC 2.5 (初期版)]、 VB6 SP5には[MDAC 2.6 (初期版)]が同梱されています。 この事を考えると、そのバージョン(2.5 SP3)を使う場合は、 なおさら、VB6SP5にしておいた方が安全だと思いますよ。 特に、MDAC 1.5→2.0、2.0→2.1、2.1→2.5へのバージョンアップの際には、 インターフェイスの変更(拡張)が行われたため、正しい組み合わせで 開発しないと、問題が発生する可能性がある事が知られています。 実際、ADO 2.0→2.1への以降時には、Visual Basic付属のツール (Visual Database Tools/Data Environment等)の動作に影響がありました。 (もっとも現在のバージョンでは、この問題は解決されていますけれどね) http://support.microsoft.com/default.aspx?scid=kb;EN-US;257714 http://support.microsoft.com/default.aspx?scid=kb;JA;257714 --- 以下、ちょっとややこしい話 (回答ではありません) --- ADOの下位互換性が保たれているのは、主にレイトバインドを選択した場合です。 参照設定で運用する場合は、常に「正しいバージョン」を選択するようにしてください。 (どのバージョンを選択するのが望ましいのかは、ケースバイケースですけれど) ADOの本体は msado15.dll というファイルですが、古いバージョンへの参照設定を 行った場合、このDLLが直接参照設定されるのではなく、バージョンごとに用意された msado??.tlb というファイルを経由して参照される事になります。 (どのバージョンのADOでも、最終的に利用されるファイルは msado15.dll です) このときmsado??.tlb 上においては、古いインターフェイスに対して、 別の名前が付けられる事があります。 例えば、『ADO 2.5』を参照設定している際に、「インターフェイス」を意識した コーディングを行う必要がある場合には、『Set R = New ADODB.Recordset』というコードで 利用される変数を、「As ADODB.Recordset」と書くのではなく、 Dim R1 As ADODB.Recordset15 '…1.5相当のRecordset型 Dim R2 As ADODB.Recordset20 '…2.0相当のRecordset型 Dim R3 As ADODB.Recordset21 '…2.1相当のRecordset型 Dim R4 As ADODB.[_Recordset] '…既定の型(単にADODB.Recordsetと書いた場合は、これに相当) などのように記述する事がごく稀にあります。 # 上記はRecordsetの場合ですが、Connectionなどにも複数バージョンのインターフェイスがあります。 # また、別のバージョンのADOを参照設定している場合は、別の型定義が必要な場合もあります。 # http://support.microsoft.com/default.aspx?scid=kb;ja;195049 1.5版は、Recordset型の基本インターフェイスとなります。 2.0版は、さらにActiveCommandプロパティなどが追加されています。 2.1版は、さらにIndexプロパティなどが追加されています。 2.5版では、さらにSaveメソッドなどが追加されています。 通常の運用であれば、「ADODB.Recordset」という定義だけで良いのですが、 ADODCなどのように、ADOのデータ型(Recordsetオブジェクトなど)をやりとりする 必要がある場合は、バイナリ互換性を維持しないとエラーとなる事があるため、 クラス名ではなく、インターフェイス名での宣言が必要になる事があります。 http://support.microsoft.com/default.aspx?scid=kb;EN-US;222145 http://support.microsoft.com/default.aspx?scid=kb;JA;222145
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.