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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Excel(エクセル) 【VBA】複数ブックから特定のシートを抽出して一つのブックに集約するマクロについて 3 2022/09/04 15:05
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
実行時エラー -2147217900 ADODBでレコードセットオープン時エラー
Access(アクセス)
-
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
-
4
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
5
SQLでエラーです。
Visual Basic(VBA)
-
6
ACCESS VBAの実行時エラーなんですが
PowerPoint(パワーポイント)
-
7
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
8
ACCESSでタイトルバーを非表示にする方法
Access(アクセス)
-
9
このオブジェクトに値を代入することはできません
その他(データベース)
-
10
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
11
VBAで3秒だけ時間を止めたい
Visual Basic(VBA)
-
12
access2003 クエリSQL文について
その他(プログラミング・Web制作)
-
13
どこにもフォーカスを当てたくない
Access(アクセス)
-
14
テーブルに主キーを作らないデメリットは?
その他(Microsoft Office)
-
15
アクセス VBAについて FROM句の構文エラー
Access(アクセス)
-
16
Accessを開きなおすとテキストボックスの値がエラー#Name?になる
その他(データベース)
-
17
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
18
Accessにインポートしたら並び順が変わっちゃった
Access(アクセス)
-
19
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
20
VBAをつかってクエリの情報を抽出するには??
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで、抽出したデータだ...
-
AccessのWHERE句において、変数...
-
未審査請求包袋抽出表作成とは...
-
エクセルで色の付いたセルを抽...
-
【AccessVBA】レコードセットOp...
-
Excel 文字列から6桁の数値の抽出
-
コンボボックス全ての値を取得...
-
Access チェックボックスを利用...
-
COUNTIFのやり方を教えてくださ...
-
「パラメータが少なすぎます。3...
-
access クエリ yes/no型のクエ...
-
PDFファイルから特定の文字を検...
-
鶏のトサカからヒアルロン酸?
-
X-Ripperというフリーウェアに...
-
Accessの選択クエリの抽出条件...
-
アクセス 同じフィールド(テキ...
-
Photoshop CS2で抽出の際輪郭が...
-
サイホンの原理
-
エクセル VBA メール本文に指定...
-
Advanced filter を使って空欄...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで、抽出したデータだ...
-
「パラメータが少なすぎます。3...
-
PDFファイルから特定の文字を検...
-
AccessのWHERE句において、変数...
-
エクセルで色の付いたセルを抽...
-
ACCESSのクエリー抽出条件にIIF...
-
【AccessVBA】レコードセットOp...
-
Excel 文字列から6桁の数値の抽出
-
PDFファイル/抽出許可され...
-
X-Ripperというフリーウェアに...
-
アクセス 同じフィールド(テキ...
-
未審査請求包袋抽出表作成とは...
-
access クエリ yes/no型のクエ...
-
ACCESS クエリ 条件以外のレ...
-
血から鉄って作れないですか?
-
エクセル関数で住所から丁目番...
-
Access チェックボックスを利用...
-
COUNTIFのやり方を教えてくださ...
-
エクセル VBA メール本文に指定...
-
Accessの選択クエリの抽出条件...
おすすめ情報