OK let’s see if I have got you right. You have 3 combo boxes for a record. Each box limits the available options in the next box. Say you choose "A" in the first, "B" in the second, and "C" in the third. So it is "ABC". Now you enter another record, it can be "ACC", "BBC", etc but it cannot be "ABC". Am I on the right track? In other words you in a sense have 3 primary keys. You could set up the table so that these are your primary keys but I don't really like to use more than one primary key.
I have setup tables that have a uniqueID (an autonumber and primary key), code (or short name), description, and a group (similar to your family). The only thing unique key I set on the table is the AutoNumber field. But, I wanted the code to be unique but without making it a primary key field. The way I prevent this is from the before update event of the field. I created a function in a module called fnCheckDup. So I could make these global for about 15 different setup forms I had to change the name of the “code” field on the form to txtType. I am not the most knowledgeable VBA programmer but it works for me. Here is the function listed below. It may not work as written for you but might get you in the right direction. Let me know if this is what you were looking for.
''''Code Start''''
Public Function fnCheckDup(frmA As Form)
Dim Ctl As Control
Dim strSource As String
Dim strCriteria1 As String
Dim strCriteria2 As String
Dim strB As String
Dim strFullCriteria
Dim strmsg As String
Dim strTitle As String
Dim strResponse As String
Dim strStyle
strmsg = "Duplicate Type Name. Please enter another name."
strTitle = "Duplicate Entry"
strStyle = vbOKOnly + vbExclamation + vbDefaultButton1
strSource = frmA.RecordSource 'replace with frmA.RecordSouce
strCriteria2 = "=Form.txtType" 'replace with frmA.txtType
For Each Ctl In frmA.Controls 'replace with frmA.Controls
If InStr(1, Ctl.Tag, "CheckDup"

> 0 Then
strCriteria1 = Ctl.ControlSource
'Exit For
strFullCriteria = strCriteria1 & strCriteria2
If (IsNull(strB = DLookup(strCriteria1, strSource, strFullCriteria)) = False) Then
strResponse = MsgBox(strmsg, strStyle, strTitle)
Docmd.CancelEvent
Docmd.RunCommand acCmdUndo
End If
End If
Next
End Function
''''Code End''''
Remember the Past, Plan for the Future, yet Live in the Now for tomorrow may never come.
-etrain