accessのDAOの質問です。

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

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

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

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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:
  • 終了: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ベストアンサー獲得回数51

ポイント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

回答回数470ベストアンサー獲得回数116

ポイント50pt

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

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

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

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

回答回数289ベストアンサー獲得回数51ここでベストアンサー

ポイント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

回答回数504ベストアンサー獲得回数141

ポイント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

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

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

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

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

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