前回質問分でhirotonさんとhatenaさんから回答頂いた下記は
CurrentDb.Execute strSQLでいけたのですが、これは何故でしょうか?
変数 strSQL に格納された SQL 文の中に「パラメータと解釈し得る要素」が含まれておらず、
また SQL 全体において構文上の不備がないからです。
この場合の「パラメータと解釈し得る要素」とは、主に次のようなものです。
データベース上のどのテーブル/クエリの名前とも一致しない識別子
クエリから呼び出されたテーブル/クエリのどのフィールドの名前とも一致しない識別子
件の INSERT INTO 文 においては、Forms![F_改修履歴に追加設定]![tx受付日付代入用]などの記述は
FROM 句で呼び出されている[T_製造履歴]のどのフィールドの名前とも一致しないため、
暗黙的に「そういう名前のパラメータである」と解釈されます。
strSQL = ", [完成日付]=" & Format(Me!change_Date, "#yyyy/mm/dd#")
上記の場合は非連結テキストボックス[change_Date]の値が
「 SQL 内における日時リテラル」として組み込まれるよう
文字列の整形と文字列連結が行われており、最終的に
UPDATE 文の中に「パラメータと解釈し得る要素」が
含まれないようになっています。
strSQL & ", [備考]='" & Me!change_Biko & "'"
ちなみに、この時の非連結テキストボックス[change_Biko]の値が
「I'm sorry.」という文字列だった場合、SQL 上の構文エラーが発生します。
文字列リテラルの囲み記号としてシングルクォーテーションを使用する場合は、
文字としてのシングルクォーテーションを次のようにエスケープした方がよいでしょう。
If Not IsNull(Me!change_Biko) Then strSQL = strSQL & ", [備考]='" & Replace(Me!change_Biko, "'", "''", 1, -1, vbBinaryCompare) & "'"
SQL 文のチェック作業を行なう際には、
'イミディエイトウィンドウに変数 strSQL の値( SQL 文)を出力
Debug.Print strSQL
'変数 strSQL に格納された SQL 文を実行
CurrentDb.Execute strSQL
以上のようにしておき、生成された SQL 文が実際に
どのようになっているかを確認してみることをお奨めします。