DAOの質問です。

access2000を使用しています。
以下の通りプログラムがあります。

Sub makuro()
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset

Set db = CurrentDb
Set rs1 = db.OpenRecordset("テーブルA")
Set rs2 = db.OpenRecordset("テーブルB")

Do Until rs1.EOF
    処理
rs1.MoveNext
Loop

Set db = Nothing
Set rs1 = Nothing
Set rs2 = Nothing
End Sub


今これを、テーブルA(テーブル)ではなくクエリを入れることは可能でしょうか?
もし可能ならどのように、Set rs1 = db.OpenRecordset("テーブルA")を
どのように書けばよろしいのでしょうか?
よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2012/02/29 20:18:09
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:cx20 No.1

回答回数607ベストアンサー獲得回数108

ポイント100pt

■ OpenRecordsetメソッド : DAOリファレンス - DAO入門講座
http://www.accessclub.jp/dao/OpenRecordset.html

Set recordset = object.OpenRecordset {(source), type, options, lockedits}

OpenRecordset メソッドの第1引数(source)には、

  • テーブル名
  • クエリ名
  • SQL文

のいずれかを指定することができます。

今これを、テーブルA(テーブル)ではなくクエリを入れることは可能でしょうか?

「クエリ」が「SQL文」のことを意味しているのでしたら、

Set rs1 = db.OpenRecordset("SELECT * FROM テーブルA")

のように記述するだけです。

Sub makuro()
    Dim db As DAO.Database
    Dim rs1 As DAO.Recordset
    Dim rs2 As DAO.Recordset
    
    Set db = CurrentDb
    Set rs1 = db.OpenRecordset("SELECT * FROM テーブルA")
    Set rs2 = db.OpenRecordset("テーブルB")
    
    Do Until rs1.EOF
        Debug.Print rs1(0) ' テーブルAの1つめの項目の値を表示
        rs1.MoveNext
    Loop
    
    Set db = Nothing
    Set rs1 = Nothing
    Set rs2 = Nothing
End Sub
他1件のコメントを見る
id:cx20

条件指定をクエリの引数として使う場合は「パラメータクエリ」を用います。

■ パラメータ付クエリーの実行 (DAO-MDB)
http://homepage2.nifty.com/inform/vbdb/dao_paramquery.htm

以下、サンプルです。

Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim qd As DAO.QueryDef
    
Set db = CurrentDb
Set qd = db.QueryDefs("クエリ1")
qd.Parameters("開始日").Value = "2012/01/25"
qd.Parameters("終了日").Value = "2012/02/25"
Set rs1 = qd.OpenRecordset
2012/02/25 19:24:34
id:syo777

丁寧なご回答ありがとうございました^^

2012/02/29 20:17:56

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません