It does can work, but probably isn't the best way to set this up. In order for it to work, the corresponding fields all have to be of the matching data types and you can't use such a relationship to create related records via the relationship such as by entering data into a portal.
Here are two alternatives that should work better:
Discard both calculation fields and match all the individual fields in your relationship instead:
Table A::Part = Table B::Part AND
Table A::CC = Table B::CC AND
Table A::Location = Table B::Location
Keep the calculation field for one of the two tables (the parent table) and match to a simple text field instead of a calculation field in the other (the child table). In the child table, define the Part, CC and Location fields as calculation fields that extract their data from the simple text field.