• 締切済み

VB6 ADOの参照設定の意味、

VB6.0にて、ADOを使用したアプリケーションを作成しています。 参照設定にてADO2.7を指定しています。 コンパイルしたアプリケーションを、 MDAC2.5が入っている環境で、動かしてみたら動きました。 インストールされているMDACの確認には、Microsoftのツールを使用しました。 下記コードを記述したモジュールを作成し、 Dim adoCon As ADODB.Connection Set adoCon = New ADODB.Connection MsgBox adoCon.version その環境にてバージョンを確認したら 「2.5」と表示されました。 ちなみに、MDAC2.7がインストールされている環境では、「2.7」と表示されました。 ここで質問があるのですが、 参照設定でADO2.7を指定した場合、 動作先の環境に入っている最新のADOのバージョンが使われると考えて良いのでしょうか? たとえば、動作先の環境にADO2.1が入っていたら、参照設定のバージョンに関わらず、それで動作する・・・ が、バージョンに依存するメソッドを実行するとエラーになってしまうとか。 Createobjectで生成するのと、かわらないのでしょうか? よろしくお願いいたします。

  • mil9
  • お礼率90% (10/11)

みんなの回答

  • yamada_28
  • ベストアンサー率43% (21/48)
回答No.2

'参照設定でADOのバージョンを指定しても、 'エラーにならず、動いているので、???な状態です。 こじつけではありますが、「下位互換」ってやつではないでしょうか(^^;)

mil9
質問者

お礼

すいません、御礼が遅くなりました。 ご回答の方ありがとうございました。 そうですね、参照定義で2.5で定義し、 2.5以上のADOで動くのであれば、 「下位互換性」と納得するんですが、 参照定義で2.7としているのに、2.5で動くのがどうも・・・。 やはり、Createobjectを行ったときと同等の動きをしているような????

  • toruo
  • ベストアンサー率30% (4/13)
回答No.1

ずいぶん昔のことなので、参考程度に。 開発時に参照設定でADOの参照を設定した場合、必ずそのバージョンが使用されます。ですので、実行環境に該当のバージョンのMDACがインストールされていないとエラーになります。 一方、参照設定は一切行わず、CreateObjectでインスタンスを生成する場合、実行環境にインストールされている最新のバージョンのADOが使用されます。 # 参照設定は一切行わない点が重要。 参考になれば。

mil9
質問者

お礼

ご回答ありがとうございます。 私もそのつもりでいたのですが、 参照設定でADOのバージョンを指定しても、 エラーにならず、動いているので、???な状態です。 うーん、なぜだろ・・・。

関連するQ&A

  • エクセルからADOの参照設定

    エクセルからADOの参照設定をする時に 「Microsoft AxtiveX Data Objects X.X Library」 の2.7なのか2.8なのか6.0なのかどれにチェックを入れて良いかわからない場合って レジストリエディタのHKEY_CLASSES_ROOTのADODB.Connectionを見ればいいのでしょうか? ADODB.Connection ADODB.Connection6.0 がありますが、 これは参照設定の Microsoft AxtiveX Data Objects 6.0 Library にチェックを付けると言う意味でしょうか?

  • ADO接続によるストアド

    あまりDB接続などに詳しくないので、 うまく説明できないと思いますがご了承下さい。 環境は Win2000+VB6+SQLSERVER2000+ADO2.5 やりたいことは、 SQLSERVERに設定してあるストアドがあります。 そのストアドをVB上から呼び出し結果を得たいわけです。 ストアドは、1つのパラメータを与えることで、 そのパラメータの最大値を取得してきます。 そして、データベース内では最大値が+1されているというものです。 現在 Dim adoCon As ADODB.Connection Dim adoCmn As ADODB.Command Dim adoRs As ADODB.Recordset ''DBに接続 Call DB接続関数(adoCon) Set adoCmn = New ADODB.Command Set adoRs = New ADODB.Recordset adoCmn.ActiveConnection = adoCon adoCmn.CommandText = "EXEC ストアド名 'パラメータ'" adoRs.Open adoCmn という状態で、ストアド自体は動作することができました。 しかし、最大値を取得することができません。 adoRsにはきちんとレコードセットが返ってきてない感じです。 どうすれば、最大値を取得できるでしょうか?

  • ADO 前は参照設定にチェックが付いてなかった

    office2003、XP SP3を使っています。 前までは,新規にmdbファイルを作成した時のVBEの参照設定は、 Microsoft ActiveX Data Objects 2.1 Libraryにチェックがついてなかったような気がしたのですが 今は 新規ブックを立ち上げて、参照設定を確認すると、 Microsoft ActiveX Data Objects 2.1 Libraryにチェックがついています。 Dim cn As New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & CurrentProject.FullName cn.Close: Set cn = Nothing のコードを標準モジュールに張り付けて実行した時に、 問題なく作動します。 昔は、参照設定に Microsoft ActiveX Data Objects 2.1 Libraryがデフォルトで ついてなかったから、 http://www.happy2-island.com/access/gogo03/capter00601-01.shtml のようにチェックしないと、 「cn As New ADODB.Connection」の部分で、 ”コンパイルエラーユーザー定義型は定義されていません。” となっていたのですが、どういう事なのでしょうか? 自分が聞きたいことは なぜ昔は新規にファイルを作った時に Microsoft ActiveX Data Objects 2.1 Library にチェックがついてなかったのに、 今はMicrosoft ActiveX Data Objects 2.1 Libraryにチェックが つくようになったのか?という事です。 ウインドウズアップデートが原因なのでしょうか?

  • ExcelでADOを使って他のブックを参照したい

    いつも楽しく勉強させていただいております。 VBA関連のサイトを参照して同じブックにあるシートをADOを使って参照することに成功しました。 Dim CN As New ADODB.Connection Dim RS As New ADODB.Recordset Dim SQL As String Set CN = New ADODB.Connection CN.Provider = "Microsoft.Jet.OLEDB.4.0" CN.Properties("Extended Properties") = "Excel 8.0" CN.Open ThisWorkbook.FullName SQL = "SELECT * FROM [userlist$]" RS.Open SQL, CN, adOpenStatic, adLockReadOnly Do Until RS.EOF Debug.Print RS![P-1] RS.MoveNext Loop RS.Close CN.Close これを現在開いている別のブック、たとえばBook1にあるシートを参照するにはどこをどう書き換えたらいいでしょうか。

  • 参照設定にチェックを入れないでADOを使いたい

    アクセス2003です。 テーブル1にテキスト型のフィールド1を作り、数レコードをサンプルで入れました。 そしてVBE画面で Sub test() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & CurrentProject.FullName rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic MsgBox rs.RecordCount rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub としたらレコード件数が取得できました。 質問は ツール→参照設定の Microsoft ActiveX Data Objects 2.8 Library にチェックをいれなくても VBAコードだけで参照設定できたような気がするので そのコードを教えてくいただけませんか? アドバイスよろしくお願いします。

  • Excel → ADO → ACCESS

    Client EXCEL Server ACCESSで数人で使うシステムを 開発中です(接続はADO)。 ある程度までできたので、他のPCで動作確認すると 参照先でエラーが発生します。 例えば set CN = new adodb.connection Cn.ConnectionString = "Provider=Microsoft.jet.oledb.4.0;Data Source=保存先" Cn.open set RS = new adodb.recordset rs.open "テーブル名",Cn,設定1,設定2 ←ここでエラー エラー内容の参照先が自分のパソコンの保存先を参照していて Data Sourceを書き換えても、エラーが帰ってきてお手上げ状態です。 自分のPCで保存先を変えても問題なくできますが パソコン自体を変えるとエラーが出ます。 cn.openでACCESSには接続できていて、rs.openでエラーが発生します。 よろしくお願いします。 環境:OS VISTA OFFICE 2007 他のクライアントPCもすべてOFFICE2007です。

  • FTPサーバー上のデータにADO接続したい

    WINDOWS2008サーバー/クライアント Win7 FTPサーバー上にあるEXCELファイルから、同じFTPサーバー上のACCESSファイルへ ADO接続したいのですが、(そのエクセルをクライアントPC Win7から実行します) Dim adoCON As New ADODB.Connection adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" _ & "Data Source=IPアドレス" & ";DATABASE=accdb名" & & "; UId=FTPユーザー名 ; PWD=パスワード; " ではエラーになってしまいます。 どなたか教えていただけませんでしょうか? どうぞよろしくお願いいたします。

  • VB5.0 参照設定で「既にロードされています」

    いつもお世話になっております。 VBで参照設定がうまくいかず困っております。 【環境】OS:Win98/VB:5.0(SP3) 【状況】一度外した参照設定を再び指定すると、以下のエラーメッセージが出て、登録ができない。 「指定されたライブラリ/プロジェクト、または互換ライブラリ/プロジェクトは既にロードされています。」 【詳細】 1.ショートカットを作成したかったので、Shelllnk.tlbを参照設定していた 2.Shelllnk.tlbの参照設定を外した 3.Shelllnk.tlbを新しく作り、再度参照設定しようとしたら、上記のメッセージが出た どこかに一度設定した情報が残っているのでしょうか? VBPファイルもテキストで開いて見たのですが、よくわかりませんでした。

  • アクセス2007でADOは使えないのでしょうか?

    デスクトップにあるDatabase1.accdbを開いて ツールの参照設定で Microsoft ActiveX Data Objects 2.8 Library にチェックを入れ Sub a() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & CurrentProject.FullName とやろうとしたら、 ************************************************************ 実行時エラー '-20147467259(80004005)': データベースの形式'C:\Users\○○\Desktop\Database1.accdb'を認識できません。 ************************************************************ となってしまいます。 再起動しても同じです。 ADOは2007では使えないのでしょうか?ご回答よろしくお願いします。

  • EXCELからORACLEのテーブルをselectしたいのですが、うま

    EXCELからORACLEのテーブルをselectしたいのですが、うまくいきません。 ご指導のほどお願いいたします。 下記サンプルをネット('Access VBA Tips)で探し実行しました。 Access版だからいけないのでしょうか? adoCON.Open "DSN=company_viewer; UID=jxxx; PWD=yjxxx;" のオープン・クローズは正常終了します。 Set adoCON = Application.CurrentProject.Connection が実行できません。 実行時エラー 438 オブジェクトはこのプロパティまたはメソッドをサポートしていません。 が出てしまいます。 Excelではだめなのでしょうか? 教えてください。 よろしくお願いいたします。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー--------------- Sub prcAdoOracleODBC() 'Access VBA Tips '4.3 ORACLEのDBを開く・閉じる/ODBCを使う Dim adoCON As New ADODB.Connection Dim adoRS As ADODB.Recordset '?ADOを使いADRSODBCというデータソースをオープンします adoCON.Open "DSN=company_viewer; UID=jxxx; PWD=yjxxx;" 'データベースのオープン(データベースオブジェクトの作成) Set adoCON = Application.CurrentProject.Connection 'レコードセットの作成(SELECT文の実行) Set adoRS = adoCON.Execute("select * from casUR") 'レコードセットのクローズ adoRS.Close 'データベースのクローズ adoCON.Close 'オブジェクト変数のクリア Set adoRS = Nothing Set adoCON = Nothing End Sub

専門家に質問してみよう