Microsoft Access Club >DAO入門講座 >このページ >次頁 < 前項  サイト内検索


クエリでレコードセットを利用する : DAO入門講座



テーブルやクエリからOpenRecordsetメソッドを開くのではなく、CreateQueryDefメソッドで新規にクエリを作成して、そのクエリからレコードセットを開くこともできます。

テーブルの作成

下記のような、取引先別売上げリストテーブルを作成します。

Subプロシージャの作成

下記のプロシージャは、一時的なクエリを作成します。そして、そのクエリを元にRecordsetオブジェクトを作成します。

Sub CreateQueryShow()
        
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim qry As QueryDef
    Dim MySQL As String
    
    Set db = CurrentDb()
    
    MySQL = "SELECT *, Format(売上金額 * 1.05,'0') AS 税込売上金額 "
    MySQL = MySQL & "FROM 取引先別売上げリスト;"
    
    Set qry = db.CreateQueryDef("", MySQL)
    Set rs = qry.OpenRecordset
        
    Do Until rs.EOF
        Debug.Print rs!ID & " , " & rs!取引先 & " : \" & _
                    rs!売上金額 & " : \" & rs!税込売上金額
        rs.MoveNext
    Loop
    
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
        
End Sub
評価

一般的に、SQLステートメントでレコードセツトを開くのではなく、QueryDefオブジェクトを使用した方がパフォーマンスに優れるといわれています。なお、CreateQueryDefメソッドの利用方法の中で、

  • Set qry = db.CreateQueryDef("", MySQL) とすると、一時的なクエリが作成されるだけで、保存はされません。
  • Set qry = db.CreateQueryDef("Query", MySQL) とすると、Queryという名のクエリが作成されます。

実行結果

イミディエイト画面に、下記のレコードが返されます。

オブジェクト変数の宣言とオブジェクトへの関連付け

Recordsetオブジェクトについて、まとめと補足を書き記します。

定型文

DAOの理解は、レコードセツトにあります。DAOをマスターするには、理解と暗記が必要です。定型文を暗記してしまいましょう。以下の構文は、Recordsetオブジェクトを 利用する上で、いつも姿を見せる定型文です

    Dim db As DAO.Database ' --- A
    Dim rs As DAO.Recordset ' --- B
    
    Set db = CurrentDb() ' --- C
    Set rs = db.OpenRecordset("クエリ名") ' --- D
構文の解説
  1. オブジェクト変数を db と定義します。
    Dim db As DAO.Database
  • As以下は、データ型を定義します。Databaseとは、Databaseオブジェクト(右図参照)に位置するオブジェクトなんですよ、と言い切っています。
  1. オブジェクト変数を rs と定義します。
    Dim rs As DAO.Recordset
  • Recordsetとは、Recordsetオブジェクト(右図参照)に位置するオブジェクトであると、言い切っています。
  1. Setステートメントは、オブジェクト変数にオブジェクトを関連付ける役割があります。
    CurrentDb()関数は、カレントデータベース(開いているデータベース)を返す関数ですから、宣言しただけのオブジェクト変数にこの段階で初めて息吹を与えます。
     Set db = CurrentDb()
  • オブジェクト変数 db は、今、自分がどこにいるのか把握できた訳です。
  1. OpenRecordsetメソッドは、レコードセットを開きます。レコードセツトは、データの集まりのことですから、オブジェクト変数である rs は、どのデータの集合体を受け持つのか、ここでその情報を受け取ります。

Set rs = db.OpenRecordset("クエリ名")

  • このように、Setステートメントの働きを得て、オブジェクト変数 db 、rs は、働き場所が決まった訳です。

 

2004/05/05

ページの先頭へ 前ページへ戻る

 


クエリでレコードセットを利用する : DAO入門講座


 

-Microsoft Access Club-

PLESKコンパネインストール済みの専用・共有レンタルサーバーを10年以上ご提供しています。信頼性は抜群です。
PLESKインストール済みの専用・共有レンタルサーバーを提供しています。
10年以上の信頼性は抜群です。