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)
-
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
-
4
Access サブフォームでの選択行の取得
その他(データベース)
-
5
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
6
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
7
Accessを開きなおすとテキストボックスの値がエラー#Name?になる
その他(データベース)
-
8
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
9
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
10
VBAからクエリのパラメータを設定したいです。
その他(データベース)
-
11
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
12
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
13
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
14
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
15
Access2013。テキストボックスにクエリの値を表示したい。 ①テーブル「受注情報」 フィールド
Access(アクセス)
-
16
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
17
【Access】クエリで抽出したデータをCSV形式でエクスポートできますか?
Access(アクセス)
-
18
ACCESS クエリの抽出条件を動的に変更したい。
その他(コンピューター・テクノロジー)
-
19
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
20
アクセスVBAのMe!と[ ]
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAをつかってクエリの情報を抽...
-
実行時エラー3131 FROM 句の構...
-
in 'where clause'のエラーの理由
-
PHP(PDO)でDBの情報を完全一...
-
SQL文が実行できません
-
LocalのNotesメールDBをVBAで参...
-
エラー3011
-
MySQLでデータベースにデータin...
-
JAVA SQLServerException 列名 ...
-
PHPで[]の使い方について
-
エクセルVBAについて
-
mysql_insert_id()の使い方
-
<VB.NET>INSERT文でDBにデータ...
-
ResultSetインターフェイスでの...
-
sortable ギブアップです…助け...
-
変数にNULLを代入したい
-
VB.NET エラーになる箇...
-
アラートでyes noを作りたいです。
-
OracleからAccessへのインポート
-
チェックボックスでチェックし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー3131 FROM 句の構...
-
VBAをつかってクエリの情報を抽...
-
テキストボックスに入れた内容...
-
SQL文が実行できません
-
エラー3011
-
LocalのNotesメールDBをVBAで参...
-
in 'where clause'のエラーの理由
-
codeigniter 複数モデルでトラ...
-
PEAR でprepareメソッドがエラーに
-
SELECT文を発行して、ACCESSよ...
-
PHP(PDO)でDBの情報を完全一...
-
PHP5でpostgresqlのデータベー...
-
PDOで取得される値がすべて文字...
-
VB.NET
-
データフォームウィザードで追...
-
ExcelVBAでAccessのデータを検...
-
SQLiteでカラムを追加
-
Accessのテーブルへ複数の主キ...
-
VBSの中で書くSQL文の記...
-
SELECT COUNTで取得した結果の表示
おすすめ情報