2.3 レコードセットの内容をリストに表示する
レコードセットの内容をフォームのレコードソースにする方法です。このテクニックは、主に外部のデータベースを使用している場合に使用します。

テーブルやクエリとフォームを連結すると、その内容を簡単にフォーム上に表示できます。特に、フォームでデータの一覧を表示したいときに便利な方法です。外部のデータベースを使用していてもリンクテーブルを使用すると連結フォームを簡単に作成できますが、何らかの事情によりリンクテーブルを使いたくない場合はこのテクニックを応用しましょう。

→関連「レコードセットの内容をリストに表示する」(内容はほぼ同じ)

※Access 2007など一部のバージョンでは「Microsoft ActiveX Object 2.x Library」を参照設定しないと利用できません。
レコードセットをレコードソースにするサンプル
 次のプログラムは、外部のデータベースに格納されているテーブルから読み込んだデータを、フォームのレコードソースとして利用する処理のサンプルです。ADOでデータベースを開き、次にSQLを実行、最後に作成したレコードセットをフォームののレコードセットに保存しています。作成した場所がフォームのイベント「開くとき(Form_Open)」のため、フォームを開いた(フォームビューに切り替えた)瞬間に自動的にセットされます。

 ポイントは2カ所あります。一つ目は、SQLを実行する前にCursorLocationadUseClientを設定している部分です。作成したレコードセットをフォームのレコードセットに保存する場合は、必ずカーソル(=行の管理)をクライアント側に設定しておく必要があるためです。

 ■CursorLocationに設定する内容

用途
adUseServer
規定値。サーバ側(接続先のデータベース)が作成したカーソルを使用する。
adUseClient
クライアント側(Access)が作成したカーソルを使用する。

 もう一つは、フォームのレコードセットに保存する際に、Clone(クローン。Closeではない/笑)を使い、レコードセットの複製を保存している部分です。元のレコードセットをそのままセットしても問題ありませんが、レコードセットが確実に別なインスタンスとなるようCloneを使用して複製するのがおすすめです。

Option Compare Database
Option Explicit

Private Sub Form_Open(Cancel As Integer)

    Dim objCon As New ADODB.Connection
    Dim objRS  As New ADODB.Recordset
    Dim strSQL As String

    'データベースを開く
    objCon.Open "Driver={Microsoft Access Driver (*.mdb)};" _
              & "DBQ=C:\DATABASE\DBF.mdb;"

    'カーソルの設定[ポイント1]
    objRS.CursorLocation = adUseClient

    'SQLの実行
    strSQL = "select  *" _
           & "  from  アドレス帳テーブル"
    objRS.Open strSQL, objCon, adOpenDynamic

    'レコードセットの複製をコピー[ポイント2]
    Set Me.Recordset = objRS.Clone

    '後処理
    objRS.Close
    Set objRS = Nothing

End Sub
参考情報
 サンプルで想定しているフォームは、図のようなデータと連結した帳票フォームです。テキストボックスにはコントロールソースが設定してありますが、フォームのレコードソースは未設定(矢印のところ)です。



 また、テールブルのレイアウトは次の通りです。本サイトのコンテンツ「アドレス帳を作ってみよう for Access 2000〜2003」で使用したテーブル「アドレス帳テーブル」と同じです。

 ■テーブル「アドレス帳テーブル」のレイアウト
主キー
フィールド名
データ型
サイズ
書式

レコードキー
オートナンバー型
長整数型


漢字氏名
テキスト型
40


カナ氏名
テキスト型
40


性別コード
数値型
長整数型


関係コード
数値型
長整数型


都道府県コード
数値型
長整数型


生年月日
日付/時刻型

日付 (S)

職業
テキスト型
50


郵便番号
テキスト型
10


住所
テキスト型
200


電話番号
テキスト型
16


FAX番号
テキスト型
16


携帯等電話番号
テキスト型
16


PCメールアドレス
テキスト型
50


携帯メールアドレス
テキスト型
50


備考
メモ型


 ※1:フィールド名は全角文字です。
 ※2:テキスト形式のフィールドは空文字列の許可はいにします。
Copyright(C) 1999-2006 結城圭介。 All rights reserved