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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
ACCESS2010のVBAでフォーム内クエリのフィールド値を取得したい
Visual Basic(VBA)
-
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
-
4
Access サブフォームでの選択行の取得
その他(データベース)
-
5
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
6
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
7
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
8
Accessを開きなおすとテキストボックスの値がエラー#Name?になる
その他(データベース)
-
9
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
10
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
11
Access2013。テキストボックスにクエリの値を表示したい。 ①テーブル「受注情報」 フィールド
Access(アクセス)
-
12
VBAからクエリのパラメータを設定したいです。
その他(データベース)
-
13
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
14
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
15
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
16
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
17
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
18
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
19
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
20
【Access】クエリで抽出したデータをCSV形式でエクスポートできますか?
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL文の実行に失敗しました???
-
VBAをつかってクエリの情報を抽...
-
SQL文が実行できません
-
トランザクション処理
-
エクセルVBAについて
-
PHPでMY SQLの連想配列をリンク...
-
PHP + MySQLを使用して詳細画面...
-
Q&Aサイトを作成していてURLの...
-
MySQLでshal()関数のエラーがで...
-
SQL文2つ実行
-
エラーの意味と対策
-
PHP+mysqlでSQL文に文字数制限...
-
mysql_fetch_objectの書き方を...
-
データベースに存在するデータ...
-
カラムにデータがあるかないか...
-
MySQLへの接続
-
!助けて!ZAMPP使用のPHP/MySQL...
-
MYSQLにINSERTできません。
-
データベースから多次元連想配...
-
アラートでyes noを作りたいです。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー3131 FROM 句の構...
-
VBAをつかってクエリの情報を抽...
-
テキストボックスに入れた内容...
-
SQL文が実行できません
-
エラー3011
-
LocalのNotesメールDBをVBAで参...
-
in 'where clause'のエラーの理由
-
codeigniter 複数モデルでトラ...
-
PEAR でprepareメソッドがエラーに
-
SELECT文を発行して、ACCESSよ...
-
PHP5でpostgresqlのデータベー...
-
PHP(PDO)でDBの情報を完全一...
-
PDOで取得される値がすべて文字...
-
VB.NET
-
データフォームウィザードで追...
-
Accessのテーブルへ複数の主キ...
-
VBSの中で書くSQL文の記...
-
ExcelVBAでAccessのデータを検...
-
SELECT COUNTで取得した結果の表示
-
SQL文の実行に失敗しました???
おすすめ情報