I have a form that contains a subform. They are linked by the Check #, so that the check number updates or creates the records in the subform.
Your original problem seems to not be repeatable but there is a lot of work needed to fix the schema as well as the forms. In addition to and to emphasize earlier comments.
1. NO main form should EVER be bound to the same table as one of its subforms.
2. Search fields should NEVER be bound
I'm trying to bring it up to a more user friend database. I don't want to reinvent the wheel. I want to be able to update the databases around the state and offer a more user friendly product.
Under the covers the schema and interface are poor. I hope the "professor" wasn't teaching database design

What is it that you think needs changing? Technically poor object naming practices don't need to be corrected but for a database of this size, it shouldn't take more than a couple of hours and so may be a good investment of your time because it will let you become familiar with the code without actually changing any logic.
What you really need to fix are the relationships because enforcing RI is very important. You also need to add validation code to all forms to prevent bad/empty records from being added and you need to fix the search/filter feature on the form you were having trouble with so the checkNumber in the main form is not bound. You need to remove the transaction table from the main form's RecordSource and the main form should be only the client info. Then you need a search/filter feature that filters the subform by check and/or other fields.
Is everyone sharing the same BE or does each town have it's own shared BE?
Changing the BE for a distributed app like this one is tricky. What you need to do is to create an Access app that modifies the schema - once. To do this, the first change I would make to the app is to add two tables. One to the FE and One to the BE. These identify the database FE/BE version. Then in the opening form, you check the two tables to ensure that the versions match. This becomes critical once you start changing the BE for real. You don't want the wrong FE trying to work with your updated BE and vice versa.
How many installations are we talking about? If the number is small enough, you might want to control all the upgrades by doing them yourself over one or two weekends via remote connections. If that isn't manageable and you have to trust an admin user at each site to do the upgrade, you need to make it foolproof.
Anyway, I have an app that is sold to the public where I use this technique so I can talk in more detail about how I handle things as you get to the point of needing actual details. I may be able to send you an updater for a BE that changes it from versionX to versionY. I'll look at one to see if the client would have a problem with me sharing it. It wouldn't work for you of course but you could see how I did the updates to tables. I did decide at the beginning that the distribution of updates would be difficult enough so I wouldn't be deleting data or columns or renaming columns, but then my naming standards were good from the start. So, all upgrades, added tables/columns and sometimes populated tables with new lookup values that the users didn't control. Sometimes the upgrades added/deleted indexes and relationships.