So you are allowing multiple values that can be range or discrete? Use:
whileprintingrecords;
stringvar x;
numbervar i;
numbervar j := ubound({?date});
for i := 1 to j do(
if minimum({?date}) = maximum({?date}) then
x := x + totext(minimum({?date}),"MM/dd/yyyy")+ ", " else
x := x + totext(minimum({?date}),"MM/dd/yyyy") + " to " + totext(maximum({?date}),"MM/dd/yyyy") + ", "
);
left(x,len(x)-2)
If you want to, you can replace the comma with chr(13), and change the last line to -1 instead of -2, and format the formula to "can grow." This would create a return after each parm value.
-LB