PR

Access VBA初心者向け|DAO基本コード完全ガイド|まず覚えるべき10パターン

VBA

Access VBAを学習し始めると、

  • DAOって何?
  • Recordsetとは?
  • どのコードを覚えればいい?
  • DLookupとの違いは?

と悩む方が多いです。

結論から言うと、DAOでまず覚えるべきなのは以下の10パターンです。

① Database取得

② Recordset取得

③ 1件取得

④ 全件ループ

⑤ 件数取得

⑥ データ追加

⑦ データ更新

⑧ データ削除

⑨ SQL実行

⑩ トランザクション

この10個が理解できれば、実務システム開発の大部分に対応できます。


スポンサーリンク

DAOとは

DAOは

Data Access Objects

の略です。

Accessのデータを操作するための仕組みです。

イメージとしては、

Access

↓

DAO

↓

テーブル操作

になります。


① Databaseを取得する

DAOの最初の一歩です。

Dim db As DAO.Database

Set db = CurrentDb

意味

現在のAccessデータベースを取得

しています。


② Recordsetを取得する

検索結果を保持します。

Dim rs As DAO.Recordset

Set rs = CurrentDb.OpenRecordset("T_CUSTOMER")

イメージ

T_CUSTOMER

↓

Recordsetへ格納

↓

データ参照


③ 先頭レコードを取得する

1件だけ取得する場合です。

Set rs = CurrentDb.OpenRecordset( "T_CUSTOMER")

If Not rs.EOF Then

  Debug.Print rs!顧客名

End If

結果

先頭顧客名取得


④ 全件ループする

実務で最も利用します。

Do Until rs.EOF

  Debug.Print rs!顧客名

  rs.MoveNext

Loop

重要

rs.MoveNext

を忘れると無限ループになります。


⑤ 件数を取得する

検索件数確認です。

rs.MoveLast

Debug.Print rs.RecordCount

結果

登録件数取得

ができます。


⑥ データを追加する

新規登録です。

Set rs = CurrentDb.OpenRecordset("T_CUSTOMER")

rs.AddNew

rs!顧客コード = "C001"

rs!顧客名 = "東京商事"

rs.Update

流れ

AddNew

↓

値設定

↓

Update

です。


⑦ データを更新する

既存データ変更です。

rs.Edit

rs!顧客名 = "大阪商事"

rs.Update

流れ

Edit

↓

値変更

↓

Update

です。


⑧ データを削除する

レコード削除です。

rs.Delete

注意

実行すると元に戻せません。


⑨ SQLを実行する

実務で最も多いです。

UPDATE

CurrentDb.Execute "UPDATE T_CUSTOMER " & "SET 顧客名='東京商事'"

DELETE

CurrentDb.Execute "DELETE FROM T_CUSTOMER"

INSERT

CurrentDb.Execute "INSERT INTO T_CUSTOMER " & "(顧客コード,顧客名) " & _

"VALUES('C001','東京商事')"

メリット

Recordsetより高速です。


⑩ トランザクション処理

重要データ向けです。

On Error GoTo ErrHandler

DBEngine.BeginTrans

CurrentDb.Execute strSQL1

CurrentDb.Execute strSQL2

DBEngine.CommitTrans

Exit Sub

ErrHandler:

DBEngine.Rollback

効果

途中エラー

↓

全取消

できます。


初心者がまず覚えるべきDAOテンプレート

実務で最も使うコードです。

Dim rs As DAO.Recordset

Set rs = CurrentDb.OpenRecordset("SELECT * " & "FROM T_CUSTOMER")

Do Until rs.EOF

  Debug.Print rs!顧客名

  rs.MoveNext

Loop

rs.Close

Set rs = Nothing

初心者がよくするミス

① MoveNext忘れ

Do Until rs.EOF

Loop

↓

無限ループ


② Close忘れ

悪い例

Set rs = ...

だけ


良い例

rs.Close

Set rs = Nothing

③ Nullエラー

悪い例

strName = rs!顧客名

良い例

strName = Nz(rs!顧客名, "")

DAOとDLookupの使い分け

DLookup

DLookup(…)

向いている処理

1件取得


DAO

OpenRecordset

向いている処理

複数件取得

ループ処理

CSV取込


実務で覚える順番

おすすめ学習順です。

Step1

OpenRecordset

Step2

Do Until rs.EOF

Step3

AddNew

Edit

Delete

Step4

Execute

Step5

BeginTrans

CommitTrans

Rollback

Copilot活用例

DAO学習にCopilotは非常に便利です。

検索処理作成

Access VBAです。

DAOでT_CUSTOMERを

検索するコードを

作成してください。


更新処理作成

DAOのExecuteを利用して

顧客情報を更新する

コードを作成してください。


コードレビュー

以下のDAOコードの

改善点を教えてください。


まとめ

DAO初心者がまず覚えるべきなのは次の10個です。

Database

Recordset

OpenRecordset

EOF

MoveNext

AddNew

Edit

Delete

Execute

BeginTrans

特に実務で最も利用するのは

CurrentDb.OpenRecordset

CurrentDb.Execute

の2つです。

まずは、

OpenRecordset

↓

ループ

↓

データ取得

から習得しましょう。

これだけで顧客管理システム、売上管理システム、CSV取込システムの基礎部分を開発できるようになります。

Access 実践マスターガイド~仕事の現場で即使える | 今村 ゆうこ |本 | 通販 | Amazon
Amazonで今村 ゆうこのAccess 実践マスターガイド~仕事の現場で即使える。アマゾンならポイント還元本が多数。今村 ゆうこ作品ほか、お急ぎ便対象商品は当日お届けも可能。またAccess 実践マスターガイド~仕事の現場で即使えるもアマ…

コメント

タイトルとURLをコピーしました