For the first part, create a hidden "other Reason" text box. Create some code in the after update method of the combo box that checks to see if the value is other, if so unhide the other reason text box.
For the query use iif... IIF(nz(CannedReason, '') = '', FreeFormReason, CannedReason) As Reason