
AccessVBAで、以下のように記述して実行したらOpen時にエラーが出てしまいました。
エラーは、「SQLステートメントが正しくありません。'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、または'UPDATE'を使用してください。」というものでした。
Dim cn As ADODB.Connection
Dim rs1 As ADODB.Recordset
Set cn = CurrentProject.Connection
Set rs1 = New ADODB.Recordset
rs1.Open "Q_F_新規契約登録_定期取引ヘッダ内容抽出", cn, adOpenForwardOnly, adLockReadOnly
いろいろと調べて、Open時の引数を一つ加えて、Openの行を以下のように書いたのですが、またエラーが出てしまいました。
エラーは、「一つ以上の必要なパラメータが設定されていません。」というものです。
rs1.Open "Q_F_新規契約登録_定期取引ヘッダ内容抽出", cn, adOpenForwardOnly, adLockReadOnly, adCmdTable
この記述はどこが間違っているのでしょうか。
足りないパラメータとは、何のことなのか、教えていただけないでしょうか。
No.2ベストアンサー
- 回答日時:
VBA の記述には問題ありません。
問題があるのはクエリの記述です。
クエリ単独では正しく動作するんですよね。
この場合考えられるのは、
(1)パラメータクエリであること。
(2)抽出条件などで、フォームのコントロールを参照したものがあること
などです。
(1)なら、「一つ以上の必要なパラメータが設定されていません。」というエラーメッセージでピンとくるでしょうから、この先(2)として話を進めます。
例として、クエリの[ID]フィールドに
抽出条件 [Forms]![フォーム名]![ID]が書かれているものとします。
標準モジュールにフォームの[ID]の値を返すプロシージャを作成します。
例えば
Public Function GetFormID() As Variant
GetFormID=[Forms]![フォーム名]![ID]
End Function
クエリの抽出条件を
=GetFormID()
とします。
DAO に限られますが、Qerydef の Parameter を使う方法もあります。
ご回答を読み、さらにいろいろと調べて
エラーを回避できました。
ありがとうございました。
根本的な原因は、私が「Openするクエリには条件指定が存在してはいけない」ということを知らなかったことです。
Openで指定しているクエリには、ご指摘の通りフォーム上のコントロールを抽出条件として設定していました。
ご回答ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
確定申告しなかった・無申告の人をどうやって見つけるのか元国税調査官に聞いてみた
無申告の方などを対象に税務調査を行う国税局の元税務調査官さんに、どう無申告を探すのか聞いてきました。
-
実行時エラー -2147217900 ADODBでレコードセットオープン時エラー
Access(アクセス)
-
実行時エラー 3265「要求された名前、または序数
Visual Basic(VBA)
-
実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」
Visual Basic(VBA)
-
4
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
5
アクセス VBAについて FROM句の構文エラー
Access(アクセス)
-
6
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
-
7
アクセス 壊れた? 「ファイルが見つかりません」
Access(アクセス)
-
8
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
9
ACCESSのSQLで、NULLかNULLでないかの判定
その他(データベース)
-
10
データベース操作時エラーについて
Visual Basic(VBA)
-
11
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
12
アクセスVBAのMe!と[ ]
Access(アクセス)
-
13
【ADO】「Execute」を使うときは「Update」は不要?
Visual Basic(VBA)
-
14
抽出条件でデータ型が一致しません。のエラーメッセージが出る
Microsoft ASP
-
15
構文エラー:演算子がありません。 ACCESS SQL
その他(データベース)
-
16
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
17
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
18
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
19
Access サブフォームでの選択行の取得
その他(データベース)
-
20
VBAをつかってクエリの情報を抽出するには??
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
エクセルで色の付いたセルを抽...
-
5
未審査請求包袋抽出表作成とは...
-
6
「パラメータが少なすぎます。3...
-
7
ACCESSのクエリー抽出条件にIIF...
-
8
PDFファイル/抽出許可され...
-
9
X-Ripperというフリーウェアに...
-
10
オートフィルターで一昨日の抽...
-
11
【エクセルVBA】 A1セルを参照...
-
12
アクセス 同じフィールド(テキ...
-
13
コンボボックス全ての値を取得...
-
14
Excel 文字列から6桁の数値の抽出
-
15
Acccess クエリで演算結果を抽...
-
16
Access チェックボックスを利用...
-
17
Excelマクロ オートフィルター...
-
18
Access クエリとテーブルの合計...
-
19
アクセスのテキストボックスでO...
-
20
Accessの選択クエリの抽出条件...
おすすめ情報
公式facebook
公式twitter