人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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")を
どのように書けばよろしいのでしょうか?
よろしくお願いします。

●質問者: syo777
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● cx20
●100ポイント ベストアンサー

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

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

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

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

今これを、テーブル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

syo777さんのコメント
クエリを作成してそれを読み込みたいのですが、 Set rs1 = db.OpenRecordset("クエリ1") といれて実行すると、 実行時エラー3061 パラメータが少なすぎます。2を指定してください。 と出て、うまく動きません・・・。 クエリなのですが、フォーム上で日付を入れて、その日付のデータを 抽出範囲として抜いたクエリになっているのですが、 そもそもクエリは抽出条件を入れたものに関しては、インプットのデータとして 使えないということでしょうか? 実験的に抽出条件を何も触っていないクエリは Set rs1 = db.OpenRecordset("クエリ1") の書き方で、うまく動いたようです・・・ 何かうまい方法はありますでしょうか?

cx20さんのコメント
条件指定をクエリの引数として使う場合は「パラメータクエリ」を用います。 >> ■ パラメータ付クエリーの実行 (DAO-MDB) http://homepage2.nifty.com/inform/vbdb/dao_paramquery.htm << 以下、サンプルです。 >|vb| 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 ||<

syo777さんのコメント
丁寧なご回答ありがとうございました^^
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ