パラメータが少なすぎます。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
こうすることで無事にクエリーを実行することができます。
\逆引き辞書があると便利です/
[itemlink post_id=”1386″]