The main form on my Access 2013 database right now is a basically a record selection form. The intent is for it to load blank until the user selects a record from a combo box, then populate fully and enable applicable buttons. I've been 90% successful in converting it to an unbound form.
When the form was bound to a table, I used the default combo box navigation macro that Access generates (basically DoCmd.SearchForRecord) and loaded the form empty in Form_Load (DoCmd.GoToRecord , , acNewRecord). Data was displayed in disabled text boxes (for values straight from the table) and single row listboxes with queries having TOP 1 (for values that required a query). Life was good and easy, until one of my users figured out how to re-enable the text box and edit my table directly. I need my users to only be able to update records using pre-defined actions which I've made buttons for, so this is a no-go for me.
I replaced the text boxes with labels -- they're blanked on Form_Load and then populated using AfterUpdate on my record selection combo box (by setting .Caption, of course). I built queries for my listboxes as well -- the RowSource is blanked on Form_Load and then set using the combo box. I love that I can now change field colors based on their values and give more intuitive data than just a blank value!
But I'm now running into two issues. They're probably trivially easy to fix, but my Google skills and/or vocabulary seem to be leaving me just short.
1st: Each of my buttons makes changes to 1-2 tables using DAO. When the form was bound, I was able to refresh the record just before exiting the button's sub (Me.Refresh), but of course now that doesn't work. I tried swapping that out for a Requery on the combo box that sets all the captions/rowsources, but that doesn't seem to do anything. So the user clicks the button, gets a beep that it completed, and the record doesn't appear to update... understandably confusing them and often causing them to repeat the action again. Smart users will click my old refresh button (DoCmd.RunCommand acCmdRefresh), which does nothing... again, I assume that method only works on bound forms.
2nd: Users then realize they can refresh the record by selecting another record (or the same record again) from the combo box. Sometimes they'll get an error... other times they won't. I haven't been able to discern why it only happens sometimes. "This record has been changed by another user since you started editing it" My understanding is this should only be possible when there's bound controls, but I don't seem to have any left!