Sometimes when I'm at my wits end with a form or report that I can't seem to debug, I have a little strategy that allows me to quickly 'sledgehammer' out the problematic area. It also is helpful if people are testing a certain form or report and I want to debug at the same time without interfering with their operations.
I duplicate the object (Figure 1 below) and do my testing on the 'CopyOf[OBJECTNAME]' object that is created. Sometimes doing this allows me to make major changes like just deleting a datasource(s) outright if I feel it can help me get to the root cause.
For example, there was a situation where there was a very highly complex form with 25 datasources and complex joins and one of the grids wasn't showing data someone was expecting. We felt it was a query issue so I was looking around in the code a bit but nothing jumped out at me. I had a hunch a something was wrong with one of the datasources whether it was a join, missing data, wrong relationships, etc. From there, you can usually hack away at that sucker until you find an indicator that a change worked. This allows you to delete that copyof object, recopy the original and then go in and more strategically look in that area for what is wrong.
In the even you get close again, you can make a copy of the CopyOf object and keep the cycle going :-) Just delete all your objects when you are done!!!!!
It won't always work but it will a majority of the time and is a good way to jar you from being stuck on something.
Hope that helps!!!!