AccessVBAのレコードセットってなぁに?DAOとかADOとか
AccessVBAの上級者ぐらいで出てくるレコードセットですが、一度覚えれば業務上の色んな場面で使えます。
しかし、AccessにレコードセットにはDAOやらADOやら何か複雑怪奇なキーワードもちらほら…
今回は「でも初心者だから難しくて手が出せない」なんてことがないように、レコードセットを優しく説明します。
Accessのレコードセットってなぁに?
Access開発を始めると、やたらめったら「レコードセット」って言葉を見たり聞いたりするかもしれません。
レコードセット(Recordest)は、レコードの集合体を指す言葉で、Accessのテーブルなんかが該当します。
Accessでは一気に複数のレコードを見ることができないので、常にカレントレコードと呼ばれる「現在のレコード(一行)」のみ認識している状態です。
エクセルのような複数行へのアクションをイメージしていると混乱するかもしれないですね。
レコードセットの箱を用意してあげて、その中から1行を取り出すようなイメージを持てば分かりやすくなります。
Accessでレコードセット扱うときはDAOだけで十分
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でレコードセットを習得すれば一気に開発する範囲が広がる
レコードセットの格納を覚えれば、Excel出力したりフォームに書き出したり、検索機能を使えたり色々広がります。
その為には、まずは超簡単なレコードセットの格納方法を覚えておきましょう。
前述で書いたコードの「 '///処理いろいろ///'」の部分については、また別の記事で紹介していこうと思います。
DeepBlueでは、VBAに関する質問や要件定義の相談を受け付けています。
今回、この記事を読んで登録してくれた方には初回のみ無料でVBAマクロに関する相談を承りますよ。
興味ある方は、是非チェックしてみてくださいね。
この記事が気に入ったらサポートをしてみませんか?