【VBA】パラメーターが少なすぎます。1を指定してください。

当ページのリンクには広告が含まれています。
パラメーター
  • URLをコピーしました!

パラメータが少なすぎます。1を指定してください。
パラメータが少なすぎます。○を指定してください。

パラメータクエリーを使っていて、上記のようなエラーに遭遇していませんか?

このエラーはパラメータ指定に問題がある場合のエラーです

「クエリーをナビゲーションウィンドウから直接実行した時はエラーにならないのに・・・」と悩んでいる方。

パラメーターがフォーム参照になっているクエリーをVBAで実行しようとしていませんか?

目次

フォーム参照のパラメータークエリーとは?

パラメーターとして表示されているフォームのコントロー値を指定しているクエリーのことです。
(例)

フォーム参照パラメーター

このパラメータークエリーは指定されているフォーム(Frm顧客登録)が開いている場合はダイアログ表示することなく実行可能です。

※指定のフォームが開いていない時は入力を求めるダイアログボックスが表示されます。

フォーム参照クエリーをVBAで実行するとこうなる

フォーム参照クエリーをVBAから実行すると、指定のフォームが開いていても閉じていても、以下のようなエラーとなります。

パラメーターエラー

これはパラメーターの指定がないというエラーです。

たとえフォームのコントロール値が参照できる状態であっても(そのフォームから起動していたとしても)パラメーターが「指定されていない」ことになってしまいます。

エラーを回避するための対処法

そもそも、VBAからパラメータークエリーを起動する場合、パラメーターは「パラメーター名」としてしか認識しません。

ナビゲーションウィンドウからの起動や、フォームのコントロールソースとしての利用の場合、パラメーターがフォーム参照形式になっていれば、自動的にパラメータ名を展開して解釈してくれます。

パラメータークエリーをVBAから実行する場合は、改めてパラメーター名に値をセットしてあげます。

Dim myDb  As Database
Dim myQdf As QueryDef
Dim myRs  As Recordset

Set myDb = CurrentDb
Set myQdf = myDb.QueryDefs("Qry顧客検索")

With myQdf
  'フォーム参照パラメータ名にコントロールの値をセット
  .Parameters("[Forms]![Frm顧客登録]![顧客ID]") = Forms![Frm顧客登録]![顧客ID]
  Set myRs = .OpenRecordset
End With




こうすることで無事にクエリーを実行することができます。

💡 パラメータクエリの活用に行き詰まったら
Access職人だった私が年収2倍のPMになった話

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次