CurrentDb.Execute "UPDATE Transaction SET receipt_id=" & txtreceipt_id & ", tdate=" & txttdate & ",total_cost=" & txttotal_cost & ",total_disc=" & txttotal_disc & " WHERE receipt_id=" & txtreceipt_id & " "
I get a run time 3144 syntax error. Can’t seem to locate the error.
Advertisement
Answer
Consider using a parameterized query with MS Access’ QueryDefs to accurately specify the data types of your binded values and avoid concatenation and quote wrapping which renders hard to maintain code. Adjust below types as needed in PARAMETERS
clause (compliant in Access SQL).
SQL (save as an MS Access stored query only once)
PARAMETERS [txtreceipt_id_PARAM] LONG, [txttdate_PARAM] DATE, [txttotal_cost_PARAM] DOUBLE, [txttotal_disc_PARAM] DOUBLE; UPDATE [Transaction] SET receipt_id = [txtreceipt_id_PARAM], tdate = [txttdate_PARAM], total_cost = [txttotal_cost_PARAM], total_disc = [txttotal_disc_PARAM] WHERE receipt_id = [txtreceipt_id_PARAM];
VBA (dynamically bind values to parameter placeholders)
Dim qdef as QueryDef Set qdef = CurrentDb.QueryDefs("mySavedQuery") qdef![txtreceipt_id_PARAM] = txtreceipt_id qdef![txttdate_PARAM] = txttdate qdef![txttotal_cost_PARAM] = txttotal_cost qdef![txttotal_disc_PARAM] = txttotal_disc qdef.Execute dbFailOnError Set qdef = Nothing