Unless you are working with bad data that you are trying to clean, the linking fields are ALWAYS the PK of one table to the FK in the other table. That means that if the PK is an autonumber, which it usually is, the FK is always a long integer. They will ALWAYS match in data type. What the combo shows is normally a text value rather than the numeric FK value. The combo will be bound to the field named MaterialID. That means that MateralD is the value that will be saved to the table. The RowSource in the combo, is what provides the MaterialName which is text and that is usually what you want to pick from and see. So, in your case.
1. ALL tables must have a a primary key, usually an autonumber. Otherwise, you will run into joins that are not updateable.
2. Each PK should have, for your own sanity and the sanity of others who try to help you, a unique name. Convention, as MajP says, is to include the name of the table so for tblMaterial, the PK would be named MaterialID. Then in the tblProductDetail, the PK would be ProductDetailID and the FK which points to a material would be MaterialID or MaterialID_FK. If you call the table tblStockList, then you might consider using StockID as the name rather than material. It just causes confusion when you use different names all over the place. Consistency is your friend and programming will be ever so much easier if you do not constantly have to rack your brain for the names of objects.
3. Once you have defined all the PK's Then go to the Relationship window and define the relationships by drawing the line between the PK of one table to the FK in a different table and enforce RI. This will help to ensure that "child" data such as tblProductDetails is properly related to tblMaterial. Also, you might want to consider naming that table tblMaterialDetails. Again, use your creativity for building a nicely working interface rather than seeing how many names you can use for the same type of object.
4. Do NOT use embedded spaces or special characters (&,%, $, etc) in ANY object names. You have no idea the weirdness this causes in code plus the extra typing because you have to encase all your names in square brackets [] when they do not conform to VBA standards. VBA CANNOT use non-conforming object names so it "helps" you by renaming them