Mel:
Its hard to tell what is going on from your post but one thing you might try.
Write a litte bit of code in a .prg that instantiates the CDE that you use. Then simulate what you are doing from the interface, ie., selecting a parent record (using the parent cursor's seek/find method), then create a couple of loops that skip backwards and forwards in the related child/grandchild record sets.
See if the faulty behaviour is coming from the form/interface or from the CDE and the rules. I have a feeling that the problem is in the interface. Isolate the CDE and simulate the action to rule out the data/relationships. Once you know the CDE is behaving itself (if it is), then you are in better shape to track down the problem because it will be in the form.
Let me know what happens.
Best
-=Gary