While record locking will keep two users from editing the same record at the same time. It shouldn't keep them from seeing the records.
Have you doublechecked the external data source settings to make sure they really are both linking to the same base file? (That's a long shot, but you haven't indicated you checked that...)
It's possible the file itself is damaged. Recover a copy and see if the recovered copy works. If the recovered copy works, replace it with an undamaged back up copy.
maybee i am wrong, but global fields cannot be indexed, ans so they cannot be used as key value for another table. You should change this to a caculated field, stored, indexed, with a fixed value.
mykeyvaluefield, = "keyvalue" (or try this, = myglobaldatafield, i didnt test this)
mynumkeyvaluefield, = 123
greetings from germany
Global fields can't be indexed, but they can be used in the "parent" side of a relationship. It's often a useful way to set up relationships such as those described in this thread. The result is a "one to many" relationship that only works from parent record to the "many" "children" records and can be a different set of records for each user due to the use of a global field.