This line makes no sense:
Me.Product_ID = Me![Product Code] = True
It tries to set the Product_ID field to the value False (because Product Code will never be equal to True) but that seems to fail and the value used in the DLookup is Null. I have no idea what that line is supposed to accomplish.
Step debug. Set a breakpoint on that line and follow the code as it executes. Look at the values of controls and variables by hovering the cursor over them.
Debugging guidelines in link at bottom of my post.
Have you run Debug>Compile?