AccessでADODB.Commandを使ってSQLをパラメータ化する際、.Parameters.Appendに構文エラーが出る場合があります。多くの場合、原因はCreateParameter関数の引数や呼び出し方にあります。この記事では、正しい書き方と修正例を詳しく解説します。
ADODB.Commandとパラメータの基本
ADODB.Commandオブジェクトは、SQL文を実行するために使用されます。パラメータ化することで、SQLインジェクションを防ぎ、安全にデータを挿入できます。
パラメータはCreateParameterで作成し、.Parameters.Appendでコマンドに追加します。
構文エラーの主な原因
提示されたコードでの構文エラーは、CreateParameterの最後の引数に空を入れている箇所や、改行・アンダースコアの使い方が原因です。ADODBではCreateParameterのValue引数は省略可能ですが、省略する場合はカンマの位置に注意する必要があります。
例えば、.CreateParameter("pUpdateDate", adDate, adParamInput, , Now())のように、サイズ引数を空にすると構文エラーになります。
修正例
正しくは、Value引数だけを指定するか、Sizeを0に設定します。
.Parameters.Append .CreateParameter("pUserName", adVarWChar, adParamInput, 50, Me.txtUserName).Parameters.Append .CreateParameter("pUpdateDate", adDate, adParamInput, 0, Now())
これにより、ADODB.Commandが正しくパラメータを認識し、コンパイルエラーは解消されます。
Tips: 複数パラメータの追加方法
複数のパラメータを追加する場合、.Parameters.Appendを1行ごとに書くのが基本です。改行の位置やアンダースコアに注意して書きます。
また、Option Explicitを有効にして変数宣言を明示することで、型や引数の誤りを早期に発見できます。
まとめ
AccessでADODB.Commandを使ったパラメータ化SQLで構文エラーが発生する場合は、CreateParameterの引数、特にSizeとValueの指定に注意する必要があります。Valueだけを指定するか、Sizeを0に設定することで、構文エラーを回避できます。
正しい構文を理解することで、安全にSQLをパラメータ化でき、SQLインジェクションのリスクも減らすことが可能です。


コメント