2008/03/13

AcceessのDAOでの繋ぎ方

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

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

参照

Dim db As Database
Dim Rst As Recordset

Set db = CurrentDb
Set Rst = db.OpenRecordset("SELECT * FROM TB_WORK WHERE SEQNo<=2")
Do Until Rst.EOF
    MsgBox (Rst("SEQNo"))
    Rst.MoveNext
Loop
Rst.Close: Set Rst = Nothing
db.Close: Set db = Nothing

更新

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

追加

Set Rst = db.OpenRecordset("SELECT * FROM TB_WORK WHERE SEQNo<=2")
Rst.AddNew
Rst("SEQNo") = 13
Rst("DATA") = "新規"
Rst.Update
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 件のコメント: