You are close to guessing the deepness of the hole I have dug
Here is what I'm doing (sort of) and what I think I want:
I have a main form (called "frame") and two child forms (called "form view"
and "sheet view"). All are basically nailed down to the same query/table and
are synched with parent child fields. There is navigation on the frame, and
when you move it, the "form view" walks through each record, one at a time.
The records themselves are transactions, and one of the fields is "dog".
In the "sheet view" the parent/child link is on "dog" so that what happens
is that sheet view displays all the rows for a particular dog. In the form
you are looking at one record for the dog, and in the sheet you see all of
them. It is sometimes easier to scan/edit a set of related records in sheet
view, on the other hand, it is nicer to enter/edit/ponder a complex record
in form view so I'm trying to get the best of both here.
Master/Child does most of the work automatically. As a new dog is brought
into view using the navigators, or a search box I have on the "frame", and
presto, the sheet view is synched. However, when I click on a row in the
sheet view that is different than the record in the form I would like the
form to switch to that record. Put another way: if the form is viewing a
dog, the sheet shows data from that dog. What I want is as follows: if the
focus is on a certain dog record in the sheet, I want the form to display
that dog.
Trying to code this in the Current for each of the three forms I get an
infinite loop because moving the record fires another Current. I have got it
working now, as you suggest, by having a Guid on the frame and a Current
that checks to see if we are already there and it doesn't do a move record
in that case. I was using that technique to move the focus on the sheet to
agree with what record the form was on but what I really want is the other
way around; a hit on the sheet to move the record in the form.
To make matters worse I don't really understand the name/scope system in
Access. In having the two child forms talk to each other it seems as if I
have to route everything through the parent. I seemed to be able to figure
out identifiers that would allow the parent to refer to child (sub) forms
OK, and for child forms to refer to their parent. Actually, it seems as if
there are about a dozen different ways to do this and I'm sure some of them
are Not Best Practices

but I don't know which. However, I've not been
successful in having a child talk to a "peer" directly. Also, there are
really two names for a subform near as I can tell. The parent has a kind of
container name (where the master/child fields live) that it can refer to,
and then there is the subform inside that. It's not clear to me if a parent
can/should refer to the container name or the form itself. In any case, you
can see I'm confused

and if I need to involve the Current of the parent
as well as each child to pull this off I will almost certainly be debugging
some more infinite loop situations without expert guidance.
TIA