Hi
You are not doing anything wrong, but Inaport insists on having the Account as a parent of Contact even for an update because of some quite complex business logic that needs to be implemented.
Two possible approaches. First uses dbexecsql()
1. add a new field in tab 3 called accountid, and initialise it with:
dbexecsql("T", "SELECT accountid FROM contact WHERE email = '" & #myEmailField & "'")
2. use this accountid to match on account as top table, then go down to contact
Second approach uses a match on contact as top table, then account, then finally update contact:
Contact (Operation Match single, Primary Key contactid, CHILD KEY accountid (NOTE THIS), match on email)
Account (Operation Match single, Primary and foreign key accountid, no match criteria
Contact(Operation Update, Primary key contactid, foreign key Accountid, match on email)
You do not need matching on the account table because there is only one account for a contact.
HTH
Regards
David