見出し画像

AccessVBAのレコードセットってなぁに?DAOとかADOとか

AccessVBAの上級者ぐらいで出てくるレコードセットですが、一度覚えれば業務上の色んな場面で使えます。

しかし、AccessにレコードセットにはDAOやらADOやら何か複雑怪奇なキーワードもちらほら…

今回は「でも初心者だから難しくて手が出せない」なんてことがないように、レコードセットを優しく説明します。

Accessのレコードセットってなぁに?

Access開発を始めると、やたらめったら「レコードセット」って言葉を見たり聞いたりするかもしれません。

レコードセット(Recordest)は、レコードの集合体を指す言葉で、Accessのテーブルなんかが該当します。

画像1

引用:RYUKOKU UNIVERSITY.

Accessでは一気に複数のレコードを見ることができないので、常にカレントレコードと呼ばれる「現在のレコード(一行)」のみ認識している状態です。

エクセルのような複数行へのアクションをイメージしていると混乱するかもしれないですね。

レコードセットの箱を用意してあげて、その中から1行を取り出すようなイメージを持てば分かりやすくなります。

Accessでレコードセット扱うときはDAOだけで十分

画像3

DAOとADOの違いは、超簡単に言って内部のテーブルを扱うか?外部のデータベースを扱うか?の違いです。

「あ、うちSQLServer使ってる」「うちもmySQL使ってる」と思った方は安心してください。

Access内にリンクテーブルを貼っている場合は、DAOの範疇で操作可能なので無理にADOを覚える必要もありません。

膨大なデータになってきた場合に、パフォーマンスを上げる目的で直接mySQL等に接続する場合のみADOが活躍します。

だから、リンクテーブルもローカルテーブルも同じDAOで扱って組んでいきましょう。

【コード例】超簡単なDAOの定義と変数への格納

では、実際に僕が仕事で書いているコード例を紹介します。

Private Sub definitionRecordset() 'レコードセットの定義って意味です'

    Dim rs As DAO.Recordset
    
        Set rs = CurrentDB.OpenRecordset("[テーブル名]") '任意のテーブル名'
        '///処理いろいろ///'
            rs.Close
        Set rs = nothing
            
End Sub

基本は、これだけでレコードセットを扱うことが可能です。

もちろん「テーブル名」にはリンクテーブルの名前を入れても動作OKですよ。

 めっちゃ省略すると「CurrentDB.OpenRecordset("[テーブル名]")」を変数にSetで格納すれば、後は何とかなります。笑

AccessVBAでレコードセットを習得すれば一気に開発する範囲が広がる

画像4

レコードセットの格納を覚えれば、Excel出力したりフォームに書き出したり、検索機能を使えたり色々広がります。

その為には、まずは超簡単なレコードセットの格納方法を覚えておきましょう。

前述で書いたコードの「 '///処理いろいろ///'」の部分については、また別の記事で紹介していこうと思います。

画像5

DeepBlueでは、VBAに関する質問や要件定義の相談を受け付けています。

今回、この記事を読んで登録してくれた方には初回のみ無料でVBAマクロに関する相談を承りますよ。

興味ある方は、是非チェックしてみてくださいね。


この記事が気に入ったらサポートをしてみませんか?