If the report needs to return only emnployees that will have a 5,10,15,...,50 year anniversary, you can try doing something like this:
Report menu, Record Selection, Record.
In the editor, add this:
(({Employee.Hire Date} in dateadd("yyyy",-5,minimum({?date range})) to dateadd("yyyy",-5,maximum({?date range}))) or
({Employee.Hire Date} in dateadd("yyyy",-10,minimum({?date range})) to dateadd("yyyy",-10,maximum({?date range}))) or
({Employee.Hire Date} in dateadd("yyyy",-15,minimum({?date range})) to dateadd("yyyy",-15,maximum({?date range}))) or
({Employee.Hire Date} in dateadd("yyyy",-20,minimum({?date range})) to dateadd("yyyy",-20,maximum({?date range}))) or
({Employee.Hire Date} in dateadd("yyyy",-25,minimum({?date range})) to dateadd("yyyy",-25,maximum({?date range}))) or
({Employee.Hire Date} in dateadd("yyyy",-30,minimum({?date range})) to dateadd("yyyy",-30,maximum({?date range}))) or
({Employee.Hire Date} in dateadd("yyyy",-35,minimum({?date range})) to dateadd("yyyy",-35,maximum({?date range}))) or
({Employee.Hire Date} in dateadd("yyyy",-40,minimum({?date range})) to dateadd("yyyy",-40,maximum({?date range}))) or
({Employee.Hire Date} in dateadd("yyyy",-45,minimum({?date range})) to dateadd("yyyy",-45,maximum({?date range}))) or
({Employee.Hire Date} in dateadd("yyyy",-50,minimum({?date range})) to dateadd("yyyy",-50,maximum({?date range}))))
I know this seems cumbersome, but it will get passed down to the database in SQL.
Now to show there anniversary year, create a formula like this:
numbervar i;
numbervar result;
for i := 5 to 50 step 5
do
(
if {Employee.Hire Date} in dateadd("yyyy",-i,minimum({?date range})) to dateadd("yyyy",-i,maximum({?date range})) then
(
result := i;
exit for;
)
);
result
~Brian