

ACCESS VBAを使ってプログラムを組んでいるVBA初心者です。ヘルプやいろんなHPを参考にしているのですが、どうしてもわからないことがあるのでおしえてください。
クエリの情報をフォームの日付から抽出し、csvファイルを作成するというものを作ろうとしています。
クエリの抽出条件でフォームの日付の期間で抽出するようにしてあります。
VBAにてOpenRecordsetでクエリから情報を抽出しようとするのですがクエリがありませんとエラーをはかれてしまいます。クエリの指定方法がまちがっているのでしょうか?
また、以下の方法とは別の方法でクエリから抽出するやりかたがありましたら教えていただけませんでしょうか?よろしくお願いいたします。
以下にどのように記述しているか記します。
------------
Public Function value()
On Error GoTo ERRORRR
Set db = CurrentDb
Dim rs As Recordset
Set rs = db.OpenRecordset("[開通チェック]", dbOpenDynaset)
Debug.Print rs.EOF
Do Until rs.EOF
Debug.Print rs!ID
Debug.Print rs!登録状態
Debug.Print rs!開通年月日
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
Exit Function
ERRORRR:
msgbox Err.number & ":" & Err.description
End Function
--------
開通チェック:クエリ (開通年月日には Between [Forms]![開通チェック]![開始日] And [Forms]![開通チェック]![終了日] の抽出条件が書かれています。)
使用しているACCESS Ver:ACCESS97
No.3ベストアンサー
- 回答日時:
パラメータがあるクエリはパラメータをParametersで入れてあげないと開けません。
パラメータを読み取れないのでRecordsetにクエリを渡せない状態でエラーが出ていると思います。
Dim db as Database
Dim qd as QueryDefs
Dim rs as Recordset
Dim pr1 As Date, pr2 As Date
Set db = CurrentDb()
pr1 = Format(Forms("開通チェック")("開始日"), "yyyy/mm/dd")
pr2 = Format(Forms("開通チェック")("終了日"), "yyyy/mm/dd")
Set qd = db.QueryDefs("開通チェック")
qd.Parameters("pr1").Value = pr1
qd.Parameters("pr2").Value = pr2
Set rs = qd.OpenRecordSet() 'ここでRecordsetにクエリを渡します。
これでいけると思います。
No.2
- 回答日時:
「パラメータが少なすぎます」というエラーメッセージから考えられるエラーはオープンしたテーブルには存在しないフィールドの内容を参照しようとしていることが考えられます。
コードをみるとDebug.Printで「ID」「登録状態」「開通年月日」というフィールドの内容を参照していますが、これらのフィールド名は[開通チェック]というクエリーテーブルに存在しますか?
No.1
- 回答日時:
Set rs = db.OpenRecordset("[開通チェック]", dbOpenDynaset)
を
Set rs = db.OpenRecordset("開通チェック", dbOpenDynaset)
にして試してください。
この回答への補足
さっそく返答ありがとうございます。
[]をとり忘れてました。失礼しました。
O_cyanさんのいうとおり
Set rs = db.OpenRecordset("開通チェック", dbOpenDynaset)
とやったのですが、違うエラーメッセージがはかれてしまいました。
『3061:パラメータが少なすぎます。2を指定してください。』
とでてしまいました。
たぶんクエリで使用している抽出条件のことなのだろうと思うのですが指定方法がわかりません。
クエリでの抽出条件は開通年月日のフィールドに
【Between [Forms]![開通チェック]![開始日] And [Forms]![開通チェック]![終了日] 】
がはいっています。このフォームの日付をVBスクリプト内で指定しなければならないのでしょうか?またその指定する方法はどのようにすればよろしいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
-
4
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
5
アクセスVBAのMe!と[ ]
Access(アクセス)
-
6
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
7
ACCESS2010のVBAでフォーム内クエリのフィールド値を取得したい
Visual Basic(VBA)
-
8
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
9
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
-
10
2つ目のレコードの値を取得するには?
Access(アクセス)
-
11
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
12
クエリーの結果をフォームに表示させたい(Access2000)
その他(データベース)
-
13
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
14
Access2013。テキストボックスにクエリの値を表示したい。 ①テーブル「受注情報」 フィールド
Access(アクセス)
-
15
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
16
クエリのデータをテーブルに入れたい
Access(アクセス)
-
17
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
18
新規レコード行を非表示にしたい
Access(アクセス)
-
19
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
20
access テキストボックスの値取得
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
LocalのNotesメールDBをVBAで参...
-
5
codeigniter 複数モデルでトラ...
-
6
ResultSetインターフェイスでの...
-
7
PHP&MySQLでの文字列+数列の一...
-
8
MySQLでデータベースにデータin...
-
9
変数にNULLを代入したい
-
10
VB.NET エラーになる箇...
-
11
子プロセス終了で閉じてしまうm...
-
12
phpでテーブルを作る際変数によ...
-
13
PHPで絞り込み検索結果の件数を...
-
14
JAVA SQLServerException 列名 ...
-
15
phpのエラーについてです
-
16
mysql_insert_id()の使い方
-
17
DBの値を基にliにulをネストし...
-
18
PHPでmySQLのテーブルを作成したい
-
19
PHPについてなのですが未定義の...
-
20
DBで検索結果に該当するデータ...
おすすめ情報
公式facebook
公式twitter