See "Editing record access privileges" in FileMaker Help and check out this particular sub section: "Entering a formula for limiting access on a record-by-record basis" for a description of how to set this up.
Im using custom privileges with a calculation to determine which client ID on the records each client is allowed to see yet when the last record I used in my profile is not theirs then I see a <no access> message in the fields while logging in as a client. How do i make sure a client will always see their data and not any other clients data?
If it's covered with the "no access" screen then they can't see other clients data, just that screen.
But you can make the user experience nicer simply by performing a find--which can be part of your start up script. Any find performed by a script or manually by the user will automatically omit all "no access" records from the resulting found set.
Here is a script that will find all records on a given layout for full access users but will only find permissible records for limited access users:
Enter Find Mode  ---> clear the pause
Set Field [YourTable::NeverEmptyField ; "*" ]
Set Error Capture [on]
Perform Find 
Once such a script has been performed, the only way that a user can get a layout showing records covered by the No Access screen is via Show All Records and Show Omitted Only. If you have FileMaker Advanced, you can set up a custom menu that does not have those menu options or that replaces the standard menu option action with a script such as the example shown above that produces the same result as the original menu option except that "no access" records are omitted.
Im not sure how to set up the Set Field step. I assume its a calculated result yet when I set it up (Client Sheet::Company Name ; "*" ) an error message saying it is expecting an operator comes up.
That issue is so common with new users that I keep this text on file:
When Setting up Set Field, there are two Specify buttons that must be clicked. To get Set Field [Table::Field ; Expression], add set field to your script and click the first button (specify target field). Select Table::Field from the list of fields. Do not click the specify button next to the repetition box. Click OK to close this dialog box. Now click the lower specify button (calculated result) and create the expression to the right of the semicolon (;). Do not try to type in the semicolon.
That makes sense. Thanks.
So I've made that change and set it to run on the server when the layout loads yet I still get the <no access> issue. I know the client account has access since the correct info shows up when I am looking at their records through remote access via filemaker pro adv.
Sorry, but if you are getting <no access> then either this script is
a) not running
b) running on the wrong layout
c) you need to do this on more than one layout due to different layouts being based on different table occurrences
d) another script--probably performed via script trigger--is doing a show all records or show omitted only operation to undo the results of the scripted find after the script has performed this find.
So I set it up to run OnLayoutEnter for the two layouts for a client ( the layouts are a client sheet and a dashboard of charts based on data in the client sheet). When I do this it creates a loop of finding data that locks things up. (See image attached)
So I switched it to only run on the client sheet yet I still get <no access>.
Most of the data being brought in to the client sheet is stored on other tables. the client info is on client info table (we just look it up by a company name value list and show it on client sheet), and each social site credentials is in its own table and we use a portal to show it.
You have this set up to run ONRecordLoad not with OnLayoutEnter. It locks things up because this script is tripping it's own script trigger. Each time that the find is performed it trips the OnRecordLoad trigger and runs again...
Let's simplify the process for a moment.
Remove the script triggers.
Put a button on your layout that runs this script. (put it in the header)
Make sure that the layout is based on Client Sheet and not some other table occurrence.
Go to this layout and click the button to run the script.
I predict that as long as no script triggers are tripped by this script, you will not see any "no access" records after running the script.
Ive turned off script triggers, set up the button in the header, logged in via web browser as the client, hit the button and still <no access>
Maybe we should do a Skype so you can see what is gong on.
I don't think skype would show me much here. Please note that this is the first mention that you've made of the fact that you are publishing to the web. That's a pretty big detail to leave out here.
While I don't see how publishing to the web will make a difference, please reduce the possible variables by running this test only using FileMaker and not doing it via a web browser.
Also, did you run this script on a layout that lists "Client Sheet" in "Layout setup.... | Show Records From"?
Yes, Client sheet is the layout where we show records from.
ow do i run the test on filemaker pro ? How do I log in to filemaker pro with client access to see if it works?
The same account name and password log in requirement should be in affect whether you open the file using FileMaker Pro or use a Web Browser to access the web published database.
Please note that I am assuming that you are using either Instant Web Publishing or Web Direct to access the database via a web browser.
I believe it is web direct access. I am using FMPhosts.com to host the DB.
When I log in I just open Filemaker pro adv and click on open remote, choose the host and db then it opens. no password needed.
The only time I use a password is if I use a web browser.