

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も見ています
-
先着1,000名様に1,000円分もらえる!
教えて!gooから感謝をこめて電子書籍1,000円分プレゼント
-
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
アクセスVBAのMe!と[ ]
Access(アクセス)
-
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
4
ACCESS2010のVBAでフォーム内クエリのフィールド値を取得したい
Visual Basic(VBA)
-
5
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
6
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
7
Access サブフォームでの選択行の取得
その他(データベース)
-
8
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
-
9
Accessのフォーム更新方法
Access(アクセス)
-
10
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
11
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
12
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
13
ACCESS クエリの抽出条件を動的に変更したい。
その他(コンピューター・テクノロジー)
-
14
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
15
VBAからクエリのパラメータを設定したいです。
その他(データベース)
-
16
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
17
Access 別フォームへの再クエリ(更新)がしたい。
その他(データベース)
-
18
クエリーの結果をフォームに表示させたい(Access2000)
その他(データベース)
-
19
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
20
Accessでレコードを別テーブルへコピーするには
Access(アクセス)
関連するQ&A
- 1 ACCESS VBA 文字抽出について 文字の抽出をVBAにて行いたいのですが教えてください テキス
- 2 ACCESS2010のVBAでフォーム内クエリのフィールド値を取得したい
- 3 ACCESS_VBAでクエリのアップデートを自動化したい。
- 4 VBのソース上からAccessのmdbファイルのクエリを呼び出す
- 5 VBSでクエリを実行→クエリでテーブルが作れない
- 6 VB6.0でSQLSever2005をつかったプログラム学習
- 7 ACCESS→Word 又は Excel→Word VBA 又はVB.
- 8 AccessのVBAで、パラメータを使用したクエリ
- 9 Access2016のクエリを教えて下さい。 先輩が作ったクエリがわからなく、書き換え方がわかりませ
- 10 ACCESSで購入回数を表示する方法 (クエリ、VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
die と exit は何が違うので...
-
5
SQL文が実行できません
-
6
テキストボックスに入れた内容...
-
7
トランザクション処理
-
8
MySQLでデータベースにデータin...
-
9
連想配列
-
10
カラムにデータがあるかないか...
-
11
php データ削除
-
12
アラートでyes noを作りたいです。
-
13
文字化けが解決できません。お...
-
14
Resource id #3 をフィールドの...
-
15
PHPでいいね機能を作りたいので...
-
16
<VB.NET>INSERT文でDBにデータ...
-
17
会員登録したらメールが送られ...
-
18
【初歩】配列の格納データ数だ...
-
19
検索結果にラジオボタンを付加...
-
20
sqlから多次元配列に要素を格納...
おすすめ情報