[]
テーブル名またはフィールド名を角括弧で囲む必要があります。
代わりにこれを試してください:
CurrentDb.Execute "INSERT INTO PlantTransactionQuery (TransactionID,[Plant Number],Categories,Description,Location,TransactionDate,Opening_Hours,Closing_Hours,[Hours Worked],Fuel,[Fuel Cons Fuel/Hours],[Hour Meter Replaced],Comments) " & _
"VALUES (" & Me.txt13 & ",'" & Me.txt1 & "','" & Me.txt2 & "','" & Me.txt3 & "','" & Me.txt4 & "','" & Me.txt5 & "','" & Me.txt6 & "','" & Me.txt7 & "','" & Me.txt8 & "','" & Me.txt9 & "','" & Me.txt10 & "'," & Me.txt11 & "," & Me.txt12 & ")"
編集
次のように行ごとに分割すると、SQL ステートメントを視覚的に確認しやすくなります。
CurrentDb.Execute _
"INSERT INTO [PlantTransactionQuery] (" & _
"[TransactionID], " & _
"[Plant Number], " & _
"[Categories], " & _
"[Description], " & _
"[Location], " & _
"[TransactionDate], " & _
"[Opening_Hours], " & _
"[Closing_Hours], " & _
"[Hours Worked], " & _
"[Fuel], " & _
"[Fuel Cons Fuel/Hours], " & _
"[Hour Meter Replaced], " & _
"[Comments] " & _
") VALUES (" & _
Me.txt13 & ", " & _
"'" & Me.txt1 & "', " & _
"'" & Me.txt2 & "', " & _
"'" & Me.txt3 & "', " & _
"'" & Me.txt4 & "', " & _
"#" & Me.txt5 & "#, " & _
"'" & Me.txt6 & "', " & _
"'" & Me.txt7 & "', " & _
"'" & Me.txt8 & "', " & _
"'" & Me.txt9 & "', " & _
"'" & Me.txt10 & "', " & _
Me.txt11 & ", " & _
Me.txt12 & " " & _
")"
3061 エラー メッセージ "パラメーターが少なすぎます..." は、フィールド (列) 名のスペルが間違っている場合、または予約語であるフィールド名が角かっこで囲まれていない場合に発生する可能性があります。上記のクエリを編集したので、安全のために、すべてのテーブルと列の名前が括弧で囲まれています。
また、文字列を引用していて、数値を引用していないことを確認してください。そこの間違いも、前述のエラーにつながる可能性があります。
[TransactionDate] については、一貫性を保つためにテキスト ボックスのバインドを解除する必要があります。そのフィールドの値は#
、一重引用符ではなくハッシュ マーク ( ) で囲まれていることに注意してください。テキストボックスに「日付」入力マスクを追加するか、次のようなものを使用できます...
Format(CDate(Me.txt5), "yyyy-mm-dd")
...日付をフォーマットします。
最後に、そのような SQL 文字列を作成すると、SQL インジェクション.Execute
の問題が発生する可能性があることに注意してください。そのため、それを次のようなものに置き換えることも検討してください。
Dim rst as DAO.Recordset
Set rst = CurrentDB.OpenRecordset("[PlantTransactionQuery]", dbOpenTable)
rst.AddNew
rst![TransactionID] = CLng(Me.txt13)
rst![Plant Number] = Me.txt1
rst![Categories] = Me.txt2
...
rst![Comments] = Me.txt12
rst.Update