The code may not be working "properly" but Access is - at least according to how you must have set your relationships. It's telling you that you cannot enter a child record because there is no parent record, which makes sense, yes? Maybe explain why you'd want to start a child record when there is no parent record.
Yes, it is because the form is a datasheet and you have that field in the results. If you must stay with a datasheet, then set the column width to 0 in your code. That will not stop anyone else from dragging it back though. The solution is don't include the field or use a continuous form instead. With some work, you can make it look like a datasheet if that is the look you really want.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.