Gil,
That's why you shouldn't be using a natural key. If you used an autonumber key your links will work fine and easily. You still have a Case Number field That you increment using an expression like:
=Nz(DMAX("[CaseNum]","TblCases","[ClientID] = " & clientID),0)+1
You don't need to store the client number anyplace else but the case table. Since you will not be looking at the other child tables except thru the Case table there will be no problem.
Gilrucht said:
For example, that combined number is programmed into the phone system and copier for each new client and case to track those expenses. When it comes time to enter phone records for client x they can't be entered in the right record without the combined client-caseid. So regardless of whether the two ids are a combined key are not I still need both numbers in my tables.
That is not correct. Believe me I've been designing databases for 20 years. The problem is you are looking at this from the wrong angle.
The ONLY value that should be in a related table is the PK value as an FK. Anything else can be gotten by joins. In the example you cite there are three ways around the issue (I don't even want to call it a problem, because it isn't). One way is to have Phone records would be entered on a subform with the main form bound to Case table. In that case the CaseID (the autonumber) is entered as the FK in the phone records table automatically. Another way is to use a Combobox to select the CaseID (FK). The Combobox would have a RowSource like:
SELECT CaseID, ClientID & "-" & CaseNum AS CaseNumber FROM tblCases ORDER BY ClientID, CaseNum;
The Bound Column would be 1, the ColumnCount 2 and the Column Widths: 0";1". This would result in the user selecting from a list of your Composite IDs but storing the autonumber as the FK. The third way would be to have the user type in composite ID and use the After Update event to set a hidden control bound to the CaseID FK to the autonumber CaseID using a Dlookup.
In all the cases, the fact that the PK in the Case table and the FK in the child tables is an autonumber is totally transparent to the users. All they see is the composite ID that is used to select the record. And that is where you viewpoint goes awry. I think you are going under the mistaken impression that a PK has to have meaning to the user. That is actually the opposite of reality. In most situations the PK has no meaning to the user. It is used solely within the structure of the database design to perform your joins.
Let me add something else here. I don't want you to think I'm trying to fight with you. You should do what you feel is necessary and are comfortable with. What I'm telling you are the principles of good database design that I have learned (and practice) after 20 years of designing databases. These principles generally follow industrywide "Best Practices". This is more a matter of education.