If you using crystal 12 you can do optional prompts and date ranges, however you may have a problem using min and max function when its optional. Here is my solution so you can display the date range on your report:
if not hasvalue ({?start date}) then "No Date Range Selected" else
if HasLowerBound ({?start date}) and HasUpperBound ({?start date}) then
"Date Range:" + ToText(Minimum({?start date}),"dd-MMM-yyyy") + " to " +
ToText(Maximum({?start date}),"dd-MMM-yyyy")
Else if HasLowerBound ({?start date}) then
"Date Range: After " + ToText(Minimum({?start date}),"dd-MMM-yyyy")
else "Date Range: Before " + ToText(Maximum({?start date}),"dd-MMM-yyyy")
if not hasvalue ({?start date}) then "No Date Range Selected" else
if HasLowerBound ({?start date}) and HasUpperBound ({?start date}) then
"Date Range:" + ToText(Minimum({?start date}),"dd-MMM-yyyy") + " to " +
ToText(Maximum({?start date}),"dd-MMM-yyyy")
Else if HasLowerBound ({?start date}) then
"Date Range: After " + ToText(Minimum({?start date}),"dd-MMM-yyyy")
else "Date Range: Before " + ToText(Maximum({?start date}),"dd-MMM-yyyy")