The normal method for accomplishing this is to use the security model. Basically, you set a field equal to the Account Name of the creating user, then set a calculation in the security model to allow records to be viewed only when that field equals the account name ( Get ( AccountName )) value of the current user.
There are some additional considerations to improve the user experience. An indicator ("<no access>") will appear in all fields when a user doesn't have access to a given record. While this functions, it's jarring to users. To alleviate this, it's suggested to implement some additional controls:
- Trap the "Find All" command (Ctrl-J/Cmd-J) using Custom Menus to execute a script that, instead, finds all records created by the current user.
- Trap the "Perform Find" command in Find mode to execute a script that includes a "Constrain Found Set" command, isolating the found set the user has specified to include only those records that also were created by that user.
- Place a script within your navigation so that, whenever a user navigates to a new layout, the records are restricted to the current user's.
Thanks for your reply Mike!
Just wonder is there any other ways to do the filter records, like the portal filtering?
Well, one thing you can do is ... use portal filtering.
You can create an interface with a parent record, one with a portal linked to all the child records that match the portal conditions. Does have some limitations ( record lock is a big one), but it can actually be easier to implement. It all depends on what you want to accomplish in your interface.
Another option is to use the Separation Model. Create one interface file for each user, one that filters the records automatically via a specifically-crafted set of relationships for that user. Very effective, but dangerous as a precedent if your user base expands.
A lot depends on your specific situation. So you pick the method that fits best.
If the security model has been set up to control access, then the only step that needs to be changed is the Show All Records command; as Mike mentions.
Any other find operation will only select records you are allowed to look at.
A slightly different way of handling the find all command is to use custom menus to point it to a script that finds "*" in for instance, the RecordID field.
Again - this will only select records you are allowed to look at.
Okay, that's just cool. Is that a new behavior? Because I don't remember that from before. (But I am getting older.)
AFAIK it has always worked that way.
Sigh. Early onset senility.
You're a very experienced developer and did not know this particular feature - seems more like a documentation issue.
Wow , That's cool !!
Tested !! That's exactly what we looking for !
Thanks very much !!!