2008/03/13

AcceessのDAOでの繋ぎ方

参照設定でMicrosoft DAO 3.6 Object Libraryあたりを選択(バージョンは環境による)。

Access2000あたりはチェックが外れていた筈。要確認。

参照

  1. Dim db As Database  
  2. Dim Rst As Recordset  
  3.   
  4. Set db = CurrentDb  
  5. Set Rst = db.OpenRecordset("SELECT * FROM TB_WORK WHERE SEQNo<=2")  
  6. Do Until Rst.EOF  
  7.     MsgBox (Rst("SEQNo"))  
  8.     Rst.MoveNext  
  9. Loop  
  10. Rst.Close: Set Rst = Nothing  
  11. db.Close: Set db = Nothing  

更新

  1. Set Rst = db.OpenRecordset("SELECT * FROM TB_WORK WHERE SEQNo<=2")  
  2. Do Until Rst.EOF  
  3.     Rst.Edit  
  4.     Rst("DATA") = "更新"  
  5.     Rst.Update  
  6.     Rst.MoveNext  
  7. Loop  
  8. Rst.Close  

追加

  1. Set Rst = db.OpenRecordset("SELECT * FROM TB_WORK WHERE SEQNo<=2")  
  2. Rst.AddNew  
  3. Rst("SEQNo") = 13  
  4. Rst("DATA") = "新規"  
  5. Rst.Update  
  6. Rst.Close  

ちなみにADOよりもDAOの方が処理が速いというウワサを聞くんですけどなんなんですかー?

ITProのすぐわかるデータベースの基礎の一覧表をみてみると、「データベース・エンジンとデータベース接続規格の種類」のJetについては

Accessが提供するデータベースエンジンで,MDBファイル(Microsoft Accessのデータ・ファイル)を操作するための機能を提供します。スタンドアロン型またはファイル共有型のデータベースで使われます。

とあり、「データ・オブジェクトの種類」の項目をみると、DAOについては

Jetを操作するためのデータ・オブジェクトです。

となっています。

DAO は Jet データベース エンジンを主なターゲットにしているので、それ以外のDBを視野にいれているのならADO…、ってところなのでしょうか。個人的には超ビミョー。

うーん、私がAccess単体での開発をする場合は、DAOの方がいいような気がしてきたぞ。VB6.0時代はADO利用していたものの、今更Access単体のツールをVB6に移植する、という可能性はないでしょう。移植するならVB.NET。そうするとADO.NET利用になるので、ADO利用のソースをそのままごっそり利用…、なんてことはしませんから、結局イチから書き直し。ADOで書くメリットがあまり思い浮かびません。

0 件のコメント: