probably the param, at worst, try them both, one should work correctly and one shouldn't (it's been a while, so I am not positive). As you are aware, you just want to link your user entered parameter to the stored procs parameter.
I don't like subreports, if I can avoid them. In this case, since are already using a stored proc, you might be able to remove the subreports.
Why I don't like them. For your example, if there are 100 records in your main report, you are calling the database 301 times.
How to get around subreports...what are subreports, just more data linked to the 'main' record. So to get around the need of a subreport...or at least the stored proc to get the data for the subreport, make a stored proc that includes all the data that you need for all of the subreports. Displaying the data, is usually just a matter of grouping/additional details sections...and at the very worse, you can still use your subreports, just use the same datasource that you are have and link on the fields. This is what I do when I have to use a subreport...Since Crystal already has the data, there is not another 'hit' to the database (I use disconnected recordsets, so there is not a possibility of another hit)