If I have no Groups associated for a particular Client then no Items appear?!
That is correct. If you have no related records in Group there is nothing to link to Items and the portal will be empty.
I suggest the following relationship:
Clients::anyField X Items|All::anyField
Where Items|All is the name of a new Tutorial: What are Table Occurrences? of Items. Using the X operator instead of = means that any client record will link to all Items records. Set up a portal to Items|All but give it this portal filter: IsEmpty ( Filtervalues ( List ( Client_Group_Exclude_Join::_fkGroupID ) ; Items|All::_fkGroupID ) )
This evaluates as true only if the item's GroupID is not a member of the list of IDs from your exclude table.
Thanks for your advice. I'll try that out.
Thanks. It does exactly what I wanted. :-)
However, I'm opting to perhaps revert back to the traditional method where Groups are added to Clients (and those Group Items are visible for the Client - which is opposite to my original plan above).
I'm finding it quite tedious and difficult to enforce this 'Exclude Items from these Groups' method throughout Layouts. In particular where a user is allowed to select items (using the exclude conditions mentioned before) within a drop-down in a layout field for a particular Client. Drop-downs seem to be quite specific and seem to be unable to perform Filtered style rules.
I appreciate your help though.
Drop-downs seem to be quite specific and seem to be unable to perform Filtered style rules.
This is not necessarily the case. Relationships can be used to filter the value list results. This can even be a diminishing value list where each time an item is selected it drops off the list. ExecuteSQL can also be part of the filtering process.
And if you mean using a drop down to filter what is shown in a portal or to control what records make up a found set, that is also possible.