accessのDAOの質問です。

access2003を使用しています。
テーブルの読込で「Set rs2 = db.OpenRecordset("テーブル名")」のように、
テーブルを一件ずつ読込むのは成功しました。

しかし、今ここに自分で作成したクエリをいれたいのですが、色々調べたところ
クエリをテーブルの様に一件一件読込んで使用するには、
パラーメーターというのを設定しないといけないということが分かりました。

そして下記のように書きましたが、エラーが出てきてしまいます。
「Q_1件ずつ読込みたいクエリ」にはちゃんと「伝票日付」という項目があります。
なのに、「実行時エラー3265 このコレクションには項目がありません。」
と出てきてしまいます。

原因は何でしょうか?
ちなみに
「Q_1件ずつ読込みたいクエリ」には「伝票日付」という項目に
between [Forms]![フォーム画面]![抽出基準日_始] and [Forms]![フォーム画面]![抽出基準日_終]

という抽出条件が入っています。
なので、ここにパラーメータークエリを入れようとエラーが発生している処理を書いています。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/05/12 19:45:35
  • 終了:2014/05/12 23:11:19
id:syo777

ソースは以下の通りです。
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim qd As DAO.QueryDef
Dim pr1 As Date
Dim pr2 As Date

Set db = CurrentDb
Set qd = db.QueryDefs("Q_1件ずつ読込みたいクエリ")
pr1 = [Forms]![フォーム画面]![抽出基準日_始]
pr2 = [Forms]![フォーム画面]![抽出基準日_終]

qd.Parameters("伝票日付").Value = "Between " & pr1 & " And " & pr2 ←ここでエラーが発生

Set rs1 = qd.OpenRecordset
Set rs2 = db.OpenRecordset("テーブル名")


Do Until rs1.EOF
rs2.AddNew

rs2!表示順 = rs1!表示順

rs2.Update


rs1.MoveNext
Loop

ベストアンサー

id:watercooler No.2

井戸端さん回答回数289ベストアンサー獲得回数512014/05/12 20:45:32

ポイント125pt

パラメータ1つに値は1つよ。

qd.Parameters("抽出基準日_始") = pr1
qd.Parameters("抽出基準日_終") = pr2

「伝票日付」という項目に
between [Forms]![フォーム画面]![抽出基準日_始] and [Forms]![フォーム画面]![抽出基準日_終]

betweenやandのようなSQL文はすでに「Q_1件ずつ読込みたいクエリ」に書かれてるんだから必要なパラメータは抽出基準日_始と抽出基準日_終の2つってことよ。

between 抽出基準日_始 and 抽出基準日_終
id:syo777

ありがとうございます!!
処理が上手くいきました^^

2014/05/12 23:08:13

その他の回答(2件)

id:snow0214 No.1

snow0214回答回数470ベストアンサー獲得回数1162014/05/12 20:42:28

ポイント50pt

Parameterコレクションの渡し方を以下のようにしてみて下さい。

qd.Parameters("伝票日付") = "Between " & pr1 & " And " & pr2
id:syo777

こちらでは上手く動きませんでした><

2014/05/12 23:08:59
id:watercooler No.2

井戸端さん回答回数289ベストアンサー獲得回数512014/05/12 20:45:32ここでベストアンサー

ポイント125pt

パラメータ1つに値は1つよ。

qd.Parameters("抽出基準日_始") = pr1
qd.Parameters("抽出基準日_終") = pr2

「伝票日付」という項目に
between [Forms]![フォーム画面]![抽出基準日_始] and [Forms]![フォーム画面]![抽出基準日_終]

betweenやandのようなSQL文はすでに「Q_1件ずつ読込みたいクエリ」に書かれてるんだから必要なパラメータは抽出基準日_始と抽出基準日_終の2つってことよ。

between 抽出基準日_始 and 抽出基準日_終
id:syo777

ありがとうございます!!
処理が上手くいきました^^

2014/05/12 23:08:13
id:gizmo5 No.3

gizmo5回答回数484ベストアンサー獲得回数1382014/05/12 22:18:02

ポイント125pt
between [Forms]![フォーム画面]![抽出基準日_始] and [Forms]![フォーム画面]![抽出基準日_終]

定義済みクエリには上記のように書いてあるわけですから、パラメータクエリに条件をセットするのは以下のようになります。

pr1 = [Forms]![フォーム画面]![抽出基準日_始]
pr2 = [Forms]![フォーム画面]![抽出基準日_終]

'   qd.Parameters("伝票日付").Value = "Between " & pr1 & " And " & pr2 ←ここでエラーが発生
qd.Parameters("[Forms]![フォーム画面]![抽出基準日_始]") = pr1
qd.Parameters("[Forms]![フォーム画面]![抽出基準日_終]") = pr2
id:syo777

ありがとうございます!!
処理が上手くいきました^^

2014/05/12 23:08:29

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません