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

このQ&Aのポイント
  • ADOの参照設定についての変化について質問しています。昔は新規にファイルを作成した時にMicrosoft ActiveX Data Objects 2.1 Libraryにチェックがついていなかったが、今はつくようになった理由を知りたいとのことです。
  • 質問者は、以前は新規にファイルを作成する際に、Microsoft ActiveX Data Objects 2.1 Libraryにチェックがついていなかったと感じていましたが、現在はつくようになっていることを指摘しています。彼らはこの変化の理由について知りたいと思っています。
  • ADOの参照設定に関する質問です。以前は新規にファイルを作成した時にMicrosoft ActiveX Data Objects 2.1 Libraryにチェックがついていなかったが、最近はつくようになったという変化についての理由を質問しています。
回答を見る
  • ベストアンサー

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にチェックが つくようになったのか?という事です。 ウインドウズアップデートが原因なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

> マイクロソフトのページの > Microsoft ActiveX データ オブジェクト 2.5 ライブラリへの参照 (Msado25.tlb) > がADOですかね。 そうです。ActiveX Data Object の頭文字が ADO です。 ちなみに、DAO は Data Access Object の頭文字です。

raqcatacs
質問者

お礼

ありがとうございました。

その他の回答 (3)

回答No.3

> 「事前バインディング」について つまりオブジェクト名を明示的に指定してコーディングされているならば、 昔から参照設定はついていたということになります。 つまりADODB.Connectionの型定義部分がそれにあたります。 参照設定していない場合はObject型でしか定義できませんし、 そこから新たにオブジェクトを作成する場合は Set hoge = CreateObject("ADODB.Connection") という記述が必ずどこかにあるはずです。

raqcatacs
質問者

お礼

ありがとうございました。

回答No.2

> なぜ昔は新規にファイルを作った時に > Microsoft ActiveX Data Objects 2.1 Library > にチェックがついてなかったのに、 > 今はMicrosoft ActiveX Data Objects 2.1 Libraryにチェックが > つくようになったのか?という事です。 私の記憶では、新規作成時の参照設定の既定は、Access97 ではDAOのみチェックが付いていて、Access2000、2002 ではのADOのみチェック、Access2003から、両方にチェックがついてDAOが上にある、ということだったと思っています。 下記のMSのサポートページにも、既定で、DAO, ADOに参照設定されているとの記述があります。 Access 2003 でデータベースを操作する際に設定する必要があります参照 http://support.microsoft.com/kb/870962/ja 私の記憶違いかつMSのページの間違い、か、質問者さんの記憶違いのどちらかということになりますね。 Office2003 をアンインストールして、また、再インストールすれば確認できますが、そこまでして確認するほどの問題でもないと思いますので私はしませんが、気になるようでしたら確認してみてはどうでしょうか。

raqcatacs
質問者

お礼

Access2003からは、DAOとADOの両方にデフォルトで参照設定が付いてるという事ですか。 マイクロソフトのページの Microsoft ActiveX データ オブジェクト 2.5 ライブラリへの参照 (Msado25.tlb) がADOですかね。 機会があれば、再インストールをして確認してみたいと思います。

回答No.1

えっと、事前バインディングでプログラムがコードされていたのなら、 前から参照設定はついていたと思いますよ。 何かの拍子にファイルが変更されたのではないでしょうか? 大体プログラムを書く時、事前バインディングでコードしていき、 最後に参照設定を外して、実行時バインディングに変え、 事前バインディングしている部分をObjectに変換かけると 思います。 何を思ったか、 元々実行時バインディングだったが事前バインディングに書き換えた もしくは 事前バインディングでプログラムを書いてた時のファイルを操作してた のいずれかだと思いますけど。

raqcatacs
質問者

お礼

「事前バインディング」について ちょっとよくわからないので調べてみます。

関連するQ&A

  • 参照設定にチェックを入れないで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コードだけで参照設定できたような気がするので そのコードを教えてくいただけませんか? アドバイスよろしくお願いします。

  • エクセルから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 にチェックを付けると言う意味でしょうか?

  • アクセス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では使えないのでしょうか?ご回答よろしくお願いします。

  • ADOのOPENで実行時エラー

    VB6.0でACCESS2000のデータに接続しようとしていますが、Openの箇所で「実行時エラー -2147024769(8007007f) 'Open'メソッドは失敗しました:'_Connection'オブジェクト」になり困っています。 参照設定:Microsoft ActiveX Data Objects 2.7 Library Dim oConn As ADODB.Connection Set oConn = New ADODB.Connection Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\OLDATA.MDB") ご回答よろしくお願いします。

  • ADO1とADO2は意味は同じですか?

    Private Sub ADO1() Dim cn As New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & CurrentProject.FullName cn.Close: Set cn = Nothing End Sub Private Sub ADO2() Dim cn As ADODB.Connection Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & CurrentProject.FullName cn.Close: Set cn = Nothing End Sub は、 Dim cn As ADODB.Connection Set cn = New ADODB.Connection を簡素化したものが Dim cn As New ADODB.Connection になるのでしょうか?

  • ADOの参照設定(2.8or6.0)

    こんばんは。 ADOを使っているのですが 現在は Microsoft ActiveX Data Objects 2.1 Library にチェックを入れて使っています。 VBAの本を読んでいると「最新にチェックをいれる」 と書いてあるので変更しようと思うのですが その場合、2.8でしょうか?6.0でしょうか? よろしくお願いします。

  • どちらにチェックをすれば?

    私はアクセス2007を使用しています。 accessやエクセルでADOを使いたいのですが http://www.accessclub.jp/ado/01.html を見ると -------------------------------------------------------------------- 参照設定ダイアログを見ると、Access2003バージョンでは、Microsoft ActiveX Data Object2.8 Library のバージョン(2005/07現在)がインストールされていますが、バージョン2.0、2.1、2.5、2.6の各バージョンも存在します。連携は取れていますが、できるだけ最新版にチェックを入れるようにして下さい。 -------------------------------------------------------------------- と書かれております。 そして参照設定を見てみると Microsoft ActiveX Data Objects  2.0 2.1 2.5 2.6 2.7 2.8 Microsoft ActiveX Data Objects 6.0 があります。 ここでいう最新版とは「Microsoft ActiveX Data Objects 6.0」になるのでしょうか? ご回答よろしくお願いします。

  • 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 「Set」は使ったほうがいいのでしょうか?

    Sub test1() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New ADODB.Recordse End Sub Sub test2() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset End Sub この二つは同じ意味ですか? 「Set」は使ったほうがいいのでしょうか? よろしくお願いします。

  • EXCELで追加した参照設定を規定値としたい

    EXCEL2010を使用しています。 Oracleのデータ参照のため [ツール]-[参照設定] で Microsoft ActiveX Data Objects 2.8 Library を追加設定していますが、 この設定を シートの規定値として設定する方法は無いでしょうか? ご教示をお願いします。

専門家に質問してみよう