Record level access blocks access to the entire record--not specific fields within the record. You either have access to every field in a record or none of the fields in a record. That might explain why you are seeing all fields "no access" when you expected some to permit access.
If you have RECORDS that are "no access" for which you expected access, you'll need to take a closer look at what you have set up. For some reason, your expression is not evaluating as True when you expected it to. The first thing, I'd check is to make sure that the email file is of type text when I checked it in Manage | database | fields. In the case of the related tables, you'll also need to check and see if the relationships are functioning the way you expected it.
Thanks for your prompt reply. Email is indeed a text field. I tried removing the @ sign from both the account name and the email, but that didn't help. I then changed the formula that evaluates the record access so that it read Email = email@example.com, ie the literal text of the account name, with no effect, so the problem is not the Get (UserName) part.
What surprises me as much as the fact that the permissable records are blocked is the fact that all the field names in the layout (at least in table view) are also listed as <No Access>. Perhaps they're supposed to become live if a record becomes live, or is it an indication that i'm being blocked out at some more fundamental level?
I'd be grateful if anyone can figure it out...
Try using Get ( AccountName ) instead of Get ( UserName ). I should have spotted that one the first time. A user name is something specified in Preferences. Account name is the name used to log in when entering a password.
Finally worked it out: operator error! Although I had Record access set to Limited I had Field access set to None, so nothing showed, including field names.
Lesson learned. Sorry to have wasted your time.
But note Phil's point... (it might be working for you now by coincidence.)