Hi,
You don't really need a primary key, but it makes your life easier. If you
don't have a primary key, you have to be able to "spot" a (one, 1) record
giving only VALUES for one or more of its fields. If this is impossible,
forget about the proposed solution since you need to "link" the main form to
its subform through the values in the fields (making a parent-child relation
with the form-subform). Here, the parent IS the child, but that does not
change the pattern: we need to be able to locate THE record relaying only on
fields values. So, a primary key is ideal, but if you can also do without
it, that is working too.
You can use a parameter query with a form, but it is not common to
explicitly prompt for parameters, in this case, but to use the syntax
FORMS!formName!ControlName, in the query, referring to another open form,
visible or not. Indeed, if the said form is open and the said control filled
with a value, Access will automatically get its "parameter value" from the
said controls, rather than explicitly prompting the user.
Hoping it may help,
Vanderghast, Access MVP