

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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Access(アクセス) Accessクエリで年月フィールドを年のみで抽出する方法について 2 2022/08/29 18:10
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Access(アクセス) accessの日付フィールドから前年度だけを取り出したい 3 2022/04/13 23:13
このQ&Aを見た人はこんなQ&Aも見ています
-
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
ACCESS2010のVBAでフォーム内クエリのフィールド値を取得したい
Visual Basic(VBA)
-
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
-
4
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
5
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
6
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
7
access テキストボックスの値取得
Access(アクセス)
-
8
アクセスVBAのMe!と[ ]
Access(アクセス)
-
9
ACCESS クエリで重複データを最新の1件だけ表示
Access(アクセス)
-
10
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
11
クエリ実行結果0件の場合のフォーム展開中止とメッセージ表示
Access(アクセス)
-
12
「#エラー」の回避
Access(アクセス)
-
13
Access サブフォームでの選択行の取得
その他(データベース)
-
14
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
15
Access2013。テキストボックスにクエリの値を表示したい。 ①テーブル「受注情報」 フィールド
Access(アクセス)
-
16
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
17
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
18
ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい
Access(アクセス)
-
19
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
20
Accessの画面更新を一時的に停止する方法。
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pearのdisconnect()が使えない。
-
LocalのNotesメールDBをVBAで参...
-
ACCESSを用いたデータベースで...
-
codeigniter 複数モデルでトラ...
-
ExcelVBAでAccessのデータを検...
-
Call to undefined method MDB2...
-
テキストボックスに入れた内容...
-
MySQLについて
-
addslashesによるエスケープ
-
classの使い方について
-
SELECT COUNTで取得した結果の表示
-
「CGIモード」から「モジュール...
-
DB(MySQL)から複数行のデータを...
-
文字列に対してPHP上で一括置き...
-
クエリObjectをforeachで回す時...
-
mysql+php 日付別料金データで...
-
会員登録したらメールが送られ...
-
CSVをダウンロードさせた際、CS...
-
PHPからSQLite3のUPDATEができ...
-
「日付条件」のDELETEで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー3131 FROM 句の構...
-
テキストボックスに入れた内容...
-
VBAをつかってクエリの情報を抽...
-
SQL文が実行できません
-
Accessのテーブルへ複数の主キ...
-
エラー3011
-
時刻型にNULLでセットしたい
-
codeigniter 複数モデルでトラ...
-
PEAR でprepareメソッドがエラーに
-
データフォームウィザードで追...
-
LocalのNotesメールDBをVBAで参...
-
ASPでRecordCountが使用でき...
-
VB.NET
-
ADOを使いDBへ読み書きしたい
-
array_mapを使ったエスケープ処理
-
単純ですが、意外と穴?なデー...
-
PHPからMySQLを操作
-
ユーザー定義関数の意味
-
このエラーの意味は?
-
SQL文の実行に失敗しました???
おすすめ情報