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

クエリの作成 : DAO入門講座



DAOを利用すると、テーブルだけではなくクエリを作成することができます。

  • DAOで クエリはQueryDefsコレクションで管理されています。
    よって、クエリを作成するということは、これらコレクションにQueryDefオブジェクトを追加していくことを意味します。
  • クエリを作成するには、基になるテーブルがデータベースに存在していなくてはいけません。そして、このテーブルを元にSQLを作成し、CreateQueryDefメソッドを用いて作成します。
  • このあたりの定義づけはややっこしいですが、機械的に覚えてしまいましょう。

クエリ作成の手順

作成したオブジェクトをコレクションに追加する時は、階層の低い方から順番に行っていく必要があります。

作成手順

作成手順は、下記のようになります。

  1. OueryDefオブジェクトを作成する。
  2. QueyDefsコレクションに追加する。

テーブルでは、Appendメソッドを用いてコレクションに追加していましたが、クエリの場合は、下記の条件を満たしていればCreateQueryDefメソッドを実行した段階で即座にQueyDefsコレクションに新規クエリが追加されます。

  • CreateQueryDefメソッドに、クエリ名とSQLを引数として指定した場合
一時的なクエリの利用

逆に、クエリ名を指定しなかった場合は、一時的にクエリが作成されます。よって、レコードセット内だけで利用するような場合などでは、この一時的なクエリを利用すると便利でしょう。

クエリの作成

Subプロシージャ MyQueyCreate を作成します。このプロシージャを実行すると、ID、氏名、住所フィールドを持つ「住所録」テーブルを元にした一時的なクエリが作成され 、氏名フィールドのレコードに 様 を付加しフィールド名を「名前」に変更します。

Sub MyQueyCreate()

On Error GoTo エラー

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim qrdef As DAO.QueryDef
    Dim mySQL As String
    Dim strMsg As String

    Set db = CurrentDb
    
    mySQL = "SELECT ID, [氏名] & ' 様' AS 名前, 住所 FROM 住所録;" ' --- A

    Set qrdef = db.CreateQueryDef("", mySQL) ' --- B
    Set rs = qrdef.OpenRecordset() ' --- C
    
    Do Until rs.EOF
        strMsg = strMsg & vbNewLine & rs!ID & " : " & rs!名前 & " : " & rs!住所
        rs.MoveNext
    Loop
    
    MsgBox strMsg

    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
    
    Exit Sub
    
エラー:

    MsgBox Err.Number & " : " & Err.Description
    Exit Sub

End Sub
解説
  1. 変数MySQLに「住所録」テーブルを元にしたSQLを作成します。
  2. CreateQueryDefメソッドでSQLを用いた一時的なクエリを作成します。
  3. オブジェクト変数 qrdef を用いたレコードセットを作成します。
実行結果

実行結果は以下のとおりです。 下記のメッセージボックスが表示されます。一時的なクエリを作成しているので、新しいクエリが保存されることはありません。

  • 元になるテーブル
ID 氏名 住所
1 鈴木一郎 東京都港区*****
2 佐藤二郎 大阪府大阪市北区*****
3 中村三郎 愛知県名古屋市東区*****
  • メッセージボックスの表示

関連ページ

2004/06/06

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

 


クエリの作成 : DAO入門講座


 

-Microsoft Access Club-

注目のモンスター専用サーバーからお買い得プランまで幅広くそろえています。cPanel、PLESK、WEBMINまでお任せ下さい。
注目のモンスター専用サーバーからお買い得プランまで幅広い。
cPanel、PLESK、WEBMINまでお任せ下さい。