I think your problem is that you don't understand how a main form/sub form works.
When you have a main form/sub form, you set the linking fields (master and child) in the sub form control (not the sub form source object).
In your case, the Master Link field is "ContractorID_Pk" (main form) and the child Link field is "Contractor ID_FK" (the sub form).
So there MUST be a control on the main form bound to the field "ContractorID_Pk". Likewise, on the sub form, there MUST be a control bound to the field "Contractor ID_FK". You DID NOT have a control on the sub form bound to the field "Contractor ID_FK".
When you set the Master/Child link fields, Access knows that it is supposed to take the value of the Master Link field (the PK field) and insert it into the Child Link field on the sub form (the FK field). With no control for the FK field, where was Access supposed to put the PK value? Thus the record in the table "J2" was "lost" (not linked to the main form record).
There is nothing wrong with using a form in datasheet view, but for me, there is less control on how the form is displayed (one of which is the background color).
One other item.
On EVERY code page, the top two lines should be
Code:
Option Compare Database
Option Explicit
Some of the code pages do not have the 2nd line.
In the IDE, click on TOOLS/OPTIONS.
Put a check for the property "Require Variable Declaration".
This will add the line to NEW code modules.
You have to go to existing code pages and manually add the line.