Regarding binding a form to a table vs. query...
I cannot tell you why it happened, but this is a true story. I had a really complex front-end and a highly-normalized back-end. The FE contained the "working forms" but it also contained "maintenance forms" that allowed me to tweak entries in a given linked table in some degree of isolation. When I created the maintenance form bound to a table, every time I did opened that form, it asked me where to find the table. I found on this forum, perhaps in the range of seven to ten years ago, a tip that suggested I create a single-table query that had every field in the table and use THAT to bind to the maintenance forms. Lo and behold, the moment I did that, the forms shut up about finding the tables. In essence, I could open the linked table from the FE but the form that was bound to it could not. But if I built that single-table query, the form had no issues. Just to make it more organized, I made sure that the query had an ORDER BY on the primary key, just in case - but that was done after the fact.
As to that "always set objects to nothing" advice...
While I am a proponent of keeping your cleanup code orderly and thorough, there are times when this action is not needed. If the object is local to a subroutine, it might be adequate to simply assure that you close the object (assuming it is that type of object). Setting it to "NOTHING" isn't an issue for objects created in subroutine-level code. For objects that were passed in, I believe it is the case that all such passages are forced to "BY REF" and therefore, you need to consider whether the original caller still needs the thing that was passed in. I usually take the approach that it DOES need it, and therefore do not close or set to nothing. That isn't a hard and fast rule, but generally if it is not originally yours and you didn't create it, I would not attempt to close it unless that is the purpose of the function or subroutine that you called. And I would CERTAINLY NOT set it to nothing unless object disposal was the purpose of the called code.
There is a big distinction to be had in closing vs. setting to nothing. It is always a good idea to close what you opened. Setting some object to nothing makes sense if you are using a global variable and your app stays open for a long time and you constantly create and release objects through the same variable. Then, a more thorough cleanup is in order. Otherwise, you should know that exiting from a subroutine wipes out all of the local variables including the object variables. Also, if your app is fast-running and closes quickly, then process rundown will wipe memory for you.