The error is caused by using single quotes around
#form.price#. The single quotes tell sql server to treat
#form.price# as a string value (varchar). While sql server can
implicitly convert some values from one data type to another it
doesn't automatically convert type varchar to type money.
Assuming you've already validated the #form.price# value,
either get rid of the single quotes or better use cfqueryparam with
the correct cfsqltype. (I think its cf_sql_decimal)
-- this works
update @tblName
set price = 10.00
where id = 1
-- this works
update @tblName
set price = cast('10.00' as money)
where id = 1
-- this doesn't
update @tblName
set price = '10.00'
where id = 1
-- using cfqueryparam
update @tblName
set price = <cfqueryparam value="10.00"
cfsqltype="cf_sql_decimal">
where id = 1