• ベストアンサー

DAO、ADOについて

お世話になります。 エクセル、アクセスでVBAを勉強しています。 色々な調べましたが、DAO、ADOが今ひとつ ピンと来ません。 どなたか分かりやすく概要だけでもシンプルに 教えて頂けませんか。 宜しくお願い致します。

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

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.1

まず、DAOについてですが、少々極論になりますが、過去の遺物と割り切って勉強する必要はありません。 上記は個人的見解です。 過去にDAOで作成したソフトのサポート、今までDAOを使っていたのでDAOで制作する方が効率が良い、など、個々人の事情で使用し続けることはあるでしょうが、これから勉強しようという人に対しては、勉強しなくても良いと言い切って良いと思います。 ADOはDAOが進化した、次の世代の機能と考えて良いです。(厳密には違うのでしょうが、そう考えても問題ないという意味で) ADOは、SQLを発行するインターフェイスと割り切って考えると良いと思います。 対象は、ACCESS、SQLServer、Oracle、MYSQL等、ADOに対応したデータベースサーバーであれば、何でも可能です。 例えばMDBであれば、以下のように接続します。 Private Cn As ADODB.Connection Set Cn = New ADODB.Connection Call Cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=****.mdb;User ID=*****;Jet OLEDB:Database Password=******") 他のDBサーバーであれば、Openに書かれる内容が変わります。 Dim Rs As ADODB.Recordset Set Rs = Cn.Execute("SELECT * FROM [T_TEST] WHERE F_01 = 'abc' ") Call Cn.Execute("DELETE FROM [T_TEST] WHERE F_01 = 'xyz' ") あとは、上記のようにSQLをバンバン発行して、DBの内容を取得したり追加したり、書き換えたり、削除したりします。 ADOは(DAOもそうですが)、他にも様々な便利機能がありますが、まず最初に覚える基本的な使い方としてSQLを発行する(発行してレコードを取得する)機能が一番かと思うので。

miruchoko
質問者

お礼

分かり易いご回答ありがとうございます。 大変参考になりました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>ピント来ない、箇所だけでも書かないと、答えようがない。もっと勉強して質問の焦点を絞れるようになってから質問すべきだ。学習の初めは誰でもこの状態です。それまでは本・WEBを読む、周りに聞く、スクールで学ぶなどをするものだろう。 「ADO」という語句ででも、「Google」照会でもして読みましたか。 このコーナーで答えが出ても、WEBの{ADO」の記事に量的にも、質的にも及ばないだろうから、そちらを見るほうがよい。 http://www.accessclub.jp/ado/01.html ほか膨大な記事が有るようだ。 ーー 1つだけ小生から、レコード処理というもののメリットを考えることを言いたい。 昔はバッチ処理が主流で、文系ビジネスでは、これ1本だったが、エクセルのようなソフトがでて、初心者には影が薄くなった(基礎性・重要性が意識されにくくなった)と思う。 (1)アクセスではSQLなどで抜き出しや集計などしますが、レコード間(テーブルで言えば行相互)の関連するものの課題はSQLは苦手です(*1)。 ですから1レコードごとに捉えたほうが便利な処理はADOなどで やると良い。 前記*1の反省からか、SQLで対象レコードを絞り、結果の1レコードごとに何かをするというケースも結構有る(そのため近時のSQLなどでは、「カーソル処理」なども取り入れられて、使えるSQL処理系(Oracle等)も有るが) 参考 http://www.sqlpassj.org/dbe/kaihatsu/07.aspx (2)レコードごと、フィールドごとに、キメ細やかな処理をする場合はADOでレコードを捉える処理は便利です。 ーー しかし注意点 (1)ただしSQLも高度の使い方を知れば、複雑になっても、ほとんどのことができるかもしれない。主流はSQLと考えたほうが良いのかも。 (2)またADOからSQL文を実行できる仕組みもACCESSなどには有るので、思考・理解の上で区分するだけで、両方使うことが多いですが

miruchoko
質問者

お礼

ありがとうございます。 いつも大変勉強になります。

  • id357
  • ベストアンサー率29% (39/133)
回答No.2

DAO は データ アクセス オブジェクト (Data Access Object) デーダーベースを操作するためのソフトフェア、と 考えてもらえればよいかと思います。 ADO は 一般的には アクティブX データ オブジェクト です。 (ActiveX Data Object) ですが、実際は (ActiveX Data Access Object) ADAO なんですが、 これだと判りにくいので ADO (2番目のAは概念的に必要ないってな訳で) と表現されています。 ただ、これはメーカー側で勝手に名前を付けているだけですので、 アドバンスド データ オブジェクト でも、よろしいかと。 (Advaced Data Object) 要するに、DAOはデーターベースを操作するために作成されたノウハウです。 ADOは、それを、より、進化させたものです。 との、とらえかたで、よろしいのではないでしょうか。

miruchoko
質問者

お礼

明快なご回答を頂きありがとうございます。 参考になりました。

関連するQ&A

  • ADOとDAOの違い

    Access2000を使っています。今でもレコードセットオブジェクトを 取得するのにDAOを使っているのですが、ADOに移行した方がよい のでしょうか。ADOのDAOに対するメリットはなんでしょうか。また デメリットはあるでしょうか。 基本的なことかと思いますがどうぞよろしくお願いします。

  • DAOとADOの違いについて

    Accessからイントラネット上のデータベースに接続するための接続方法で困っています。 DAOとADOの違いが分からず困っています。 メリット、デメリットが分かる方、どうか教えてください。 宜しくお願い致します。

  • ADOはプログラミング言語ですか?

    アクセスVBAを勉強中なのですが VBAはプログラミング言語だと思っていますが ADOもプログラミング言語なのでしょうか? VBAと言うカテゴリーに ADO DAO ADOX が入っていて プログラミング言語とは言わないのでしょうか?

  • DAOとADO 違いは何ですか?

    アクセスを使っていますが データベースを操作する方法に DAOとADOがありますが、 この二つの違いは何ですか? コードの書き方が違うだけでしょうか?

  • AccessVBAでADOとDAOとDoCmd

    いつもお世話になっています。access超初心者です。 いろいろまちがっているかもしれませんが、よろしくお願いします。 フォームやクエリを使うのにDoCmd、検索はSQL文、 テーブルとの接続やデータの追加はDAOですが、 Access以外のデータベースの値も必要なのでADOも使用して・・・と考えています。 たとえば、データがあるかを確認するにはフォームを開き、そこのテキストボックスに探すデータを入力、ボタンをクリックすると DoCmdで表示用フォームを用意、SQL文で検索、DAOで検索結果を表示・・・としていますが、このように一つのデータベースを作成するのに、DoCmdやDAOやADOの使用が入り乱れてもよいのでしょうか? まったく知識がなく学習本を頼りにしていますので、ツギハギだらけになってしまっているのでは?と不安です。 アドバイスのほど、よろしくおねがいいたします。

  • ACCESSでレコード数の数え方(ADO,DAOなしで)

    ACCESS2000でデータベースを作っています。ADOやDAOは使っていません。 質問はタイトル通りなのですが、ADOやDAOなら簡単なのですが、訳あって それらは使えません。 色々調べてみたのですが・・・。 どなたかお知恵を貸していただけないでしょうか? P.S. 質問No.689217"ACCESSで実行時エラー3008"を質問しましたが、解決しました。 フォームの定義でロックをかけていました。(⌒ ⌒; いつもはVBで作っているのですが・・・、はやとちりのようでした。お騒がせ しました。

  • 今からDAOを勉強することは役に立ちますか?

    ADOは少しわかるのですが DAOについてはあまりよくわかりません。 なのでDAOも勉強しようかなと思いますが 世間的にはもう使われていないのでしょうか? 普段は アクセス⇔SQLサーバーを使っての業務をしています。

  • DAOのTableDefs("TblName").ConnectはADOでは

    ACCESS2002でDAOを使ってTableDefs("TblName").ConnectでリンクテーブルのPATHとFILE名を取得しています。 こういうことをADOでできませんか?よろしくお願いします。

  • アクセス2000VBA DAOをADOに書き換えてください

    アクセス2000VBA DAOをADOに書き換えてください 下記プログラムをADOに書き換えてください。(DAT1、DAT2はモジュールにて定義してあります) Option Compare Database Dim DBS As Database Dim QDF As QueryDef Dim RST As DAO.Recordset Dim COUNT1 Private Sub Form_Load() On Error Resume Next DAT2 = [Forms]![伝票]![HAKKOU1] Set DBS = CurrentDb Set QDF = DBS.QueryDefs("発行") With QDF .Parameters("DAT1") = DAT2 ’もしかしたら DAT2 ではエラーがでるかもしれません。 Set RST = .OpenRecordset() ’正しい記述を教えてください .Close End With With RST COUNT1 = !指示書 .Close End With

  • DAO3.6とACCESSの関係

    OS:WindowsXP, Windows7 開発言語:VB6、Excel VBA ACCESSがインストールされていない環境で VB6やExcel VBAでDAO3.6を使った開発は可能ですか? また、 ACCESSがインストールされていない環境に VB6やExcel VBAでDAO3.6を使ったプログラムは配布可能ですか? ご存知の方がいたら教えて下さい。宜しくお願いします。

専門家に質問してみよう