Hi, DBlank as me to take a look.
1) you can't use parameters in a command object. It is my belief that the command object was created to support the parameters, so you get the double entering.
2) you could code the date inputs as strings, then the user can enter them as just the date, you set them to a smalldatetime variable in the sp.
3) you can set defaults, but I would set the trigger to be if the value is NULL, since from the parameter screen you can check to make them null.
4) if you use the Crystal parameters you can report on them, and you don't need to return them from the sp. (you might need to add coding to the report to handle the defaults)
5) I haven't tried this just using a stored proc, but I do it all the time in datasets is to return multiple tables in the stored proc (multiple selects). If you can, then you can return the dates in their own table. (I use datasets in my reports so that I can reiterate the parameters to my report--I use ADO.Net connects, so I never touch Crystal's parameter screen, and the report doesn't know what they were)
Hope this helps.