When an issue arises, the first step in troubleshooting is usually reproducing the issue.
Once you have clear steps on how to reproduce an issue and have confirmed that those steps do in fact reproduce the issue - if it is still unclear where the issue is, then the next step is to reduce the application (aka narrow it down) to only the pieces required to see the issue. This crucial step in the troubleshooting process helps identify the piece of offending code.
Start by duplicating your application source code and data file, in this was way you can make changes (tear it apart) without permanently affecting it.
Try it with a blank data file to determine if it is related to the data file; if the problem is reproducible with a blank data file then it is usually more efficient to continue the remaining steps with the blank data file.
Next, start removing the unnecessary bits, the pieces that are not related to the issue.
Comment out half the code, remove half the form objects, etc.
After removing some of the unnecessary bits, test to see if the problem still exists - if the problem still exists then keep removing items.
Test often and then remove more if the issue is still present.
Eventually, you will find that removing an item or line of code solves the issue.
The next step is to duplicate the original database again and restart the troubleshooting process in reverse order - remove the last items first and then test to see if that was the issue.
By narrowing down the application you isolate the issue to only the necessary bits to see the problem; in this way, the issue becomes clearer and solving it becomes trivial.