Dear Sniggih,
Assuming Crystal 8.0 or higher!
You do them just as stated. If you want you can look at a rather nice report example in the examples that ship with crystal Program Files\Seagate Software\Samples\Reports\Feature Examples\Date Range Formula.rpt
In this report they did this using a switch statement: (Think of ?reference condition as ?Report Range in my example above and ?reference date as the date you want them to use if other than currentdate. If you want to use current date, just replace all the mentions of {?reference date} with CurrentDate or DadaDate as might be your preference:
{Orders.Order Date} in
Switch
(
{?reference condition} = "Aged 0 to 30 days",
({?reference date} - 30) To {?reference date},
{?reference condition} = "Aged 31 to 60 days",
({?reference date} - 60) To ({?reference date} - 31),
{?reference condition} = "Aged 61 to 90 days",
({?reference date} - 90) To ({?reference date} - 61),
{?reference condition} = "All dates from today",
Is >= {?reference date},
{?reference condition} = "All dates from tomorrow",
Is >= ({?reference date} + 1),
{?reference condition} = "All dates to today",
Is <= {?reference date},
{?reference condition} = "All dates to yesterday",
Is <= ({?reference date} - 1),
{?reference condition} = "Calender 1st half",
CDate(Year({?reference date}), 1, 1) To CDate(Year({?reference date}), 6, 30),
{?reference condition} = "Calendar 2nd half",
CDate(Year({?reference date}), 7, 1) To CDate(Year({?reference date}), 12, 31),
{?reference condition} = "Calendar 1st quarter",
CDate(Year({?reference date}), 1, 1) To CDate(Year({?reference date}), 3, 31),
{?reference condition} = "Calendar 2nd quarter",
CDate(Year({?reference date}), 4, 1) To CDate(Year({?reference date}), 6, 30),
{?reference condition} = "Calendar 3rd quarter",
CDate(Year({?reference date}), 7, 1) To CDate(Year({?reference date}), 9, 30),
{?reference condition} = "Calendar 4th quarter",
CDate(Year({?reference date}), 10, 1) To CDate(Year({?reference date}), 12, 31),
{?reference condition} = "Last 4 weeks to Sunday",
({?reference date} - 27 - (WeekDay({?reference date}) - 1)) To
({?reference date} - (Weekday({?reference date}) - 1)),
{?reference condition} = "Last 7 days",
({?reference date} - 6) To {?reference date},
{?reference condition} = "Last full month",
DateSerial(Year({?reference date}), Month({?reference date}) - 1, 1) To
DateSerial(Year({?reference date}), Month({?reference date}), 1 - 1),
{?reference condition} = "Last full week",
({?reference date} - 6 - WeekDay({?reference date})) To
({?reference date} - WeekDay({?reference date})),
{?reference condition} = "Last year Month to Date",
CDate(Year({?reference date}) - 1, Month({?reference date}), 1) To
CDate(DateAdd("yyyy", -1, {?reference date})),
{?reference condition} = "Last year Year to Date",
CDate(Year({?reference date}) - 1, 1, 1) To
CDate(DateAdd("yyyy", -1, {?reference date})),
{?reference condition} = "Month to Date",
CDate(Year({?reference date}), Month({?reference date}), 1) To {?reference date},
{?reference condition} = "Next 30 days",
{?reference date} To ({?reference date} + 30),
{?reference condition} = "Next 31 to 60 days",
({?reference date} + 31) To ({?reference date} + 60),
{?reference condition} = "Next 61 to 90 days",
({?reference date} + 61) To ({?reference date} + 90),
{?reference condition} = "Next 91 to 365 days",
({?reference date} + 91) To ({?reference date} + 365),
{?reference condition} = "Over 90 days",
Is <= ({?reference date} - 91),
{?reference condition} = "Week to Date from Sunday",
({?reference date}- (Weekday({?reference date}) - 1)) To {?reference date},
{?reference condition} = "Year to Date",
CDate(Year({?reference date}), 1, 1) To {?reference date},
True, // provide default handling and specify a valid range
CDate(1899, 12, 30) To CDate(1899, 12, 30)
)
This works great. Now, obviously you would need to add all those defaults to your PickList for the parameter and are most likely loathe to type them. No Problem.
Easy trick. Open the report I mentioned above from Crystal's Examples, go to the Parameter and edit. Choose Export Pick List, save as a text file named whatever you like.
Go to your report you are writing. Create your parameter field and then click set defaults. Choose Import Pick List and import the text file.
If you don't need all those conditions, just delete the ones that you don't want to use!
Hope you found the above helpful, if you still need help, just ask.
ro
Rosemary Lieberman
rosemary@microflo.com,
Microflo provides expert consulting on MagicTSD and Crystal Reports.