I've just found the reason for a lot of my relationship problems; no, my wife is not leaving :-), but...
I don't open the dataenvironment until the Load event, that's because I use the Load event to set correct paths to the dataenvironment.cursorsources. I then say DE.Opentables() and all is well; except if I've got relationships set in the DE, in which case VFP doesn't set the record pointers. I wouldnt have expected that.
I've worked around the problem by doing a
LOCATE
immediately after DE.Opentables.
Has anyone seen this behaviour? Maybe I'm doing something else wrong.