Consider parameterization which is supported in MS Access using QueryDefs and helps avoid the need for punctuation or concatenation:
Dim strSQL As String
Dim qdef As QueryDef
' PREPARED SQL STATEMENT WITH PARAMETERS CLAUSE (NO DATA)
strSQL = "PARAMETERS [prmDOB] Date, [prmLastMaintainDate] Date, "_
& " [prmLastmaintainUser] Text, [prmID] Long;"
& " UPDATE mytable " _
& " SET DOB = [prmDOB], " _
& " Last_Maintain_Date = [prmLastMaintainDate], " _
& " LastmaintainUser = [prmLastmaintainUser] " _
& " WHERE ID = [prmID]"
Set qdef = CurrentDb.QueryDefs("", strSQL)
' BIND PARAMS (NO QUOTES OR HASHTAGS)
qdef![prmDOB] = DOB ' ASSUMED TO BE A DATE TYPE
qdef![prmLastMaintainDate] = LastMaintainDate ' ASSUMED TO BE A DATE TYPE
qdef![prmLastmaintainUser] = LastmaintainUser ' ASSUMED TO BE A STRING TYPE
qdef![prmID] = ID ' ASSUMED TO BE AN INT/LONG TYPE
' RUN ACTION
qdef.Execute dbFailOnError
Set qdef = Nothing
You can even save above update statement as an MS Access stored query and reference it below, entirely divorcing SQL from VBA:
Set qdef = CurrentDb.QueryDefs("mySavedUpdateQuery")
' BIND PARAMS
qdef![prmDOB] = DOB
qdef![prmLastMaintainDate] = LastMaintainDate
qdef![prmLastmaintainUser] = LastmaintainUser
qdef![prmID] = ID
' RUN ACTION
qdef.Execute dbFailOnError
Set qdef = Nothing
Please note SQL parameterization is a programming industry best practice that extends beyond VBA to any application layer that runs SQL as a lower-level language including general purpose languages like Java, Python, C#, PHP, and others. Though implementation differs, concept is the same to separate SQL from application code. See StackOverflow Co-Founder Jeff Atwood's Give me parameterized SQL, or give me death.
Last_Maintain_User=But it's in theDebug.Print. - SS_DBADebug.Printof yourUPDATEstatement. Please show us how you're attempting to execute it. - HansUp