A family of Microsoft relational database management systems designed for ease of use.
Your reasoning ignores the work flow of the application and makes assumptions that may not be valid.
First, the work flow is that the user selects a part, then reviews that selection in another form. Only then does the user press a sign out button to open the Sign Out form. Therefore, by this time the user will be wanting to create the Sign Out record, so the idea of giving them a further chance to back out doesn't appear necessary. Plus, it may be confusing to the user to open the form and not see the part # in place. Second, this work flow makes it unlikely that this form would be opened on its own. The check for a Null OpenArgs, accommodates that. If the OP wants he can include a Cancel option.
My preference is to use the OpenArgs. I don't consider using a form reference as bad programming because the developer will know the app's work flow and can determine whether he might need to open the form from somewhere else.
I don't like the idea of using a Tempvar or global variable because it adds another level that is superfluous. But I wouldn't consider it "bad programming".