bueno yo utilizo para años bisiestos lo siguiente
If {Comando.bo_mes} = 01 or {Comando.bo_mes} = 03
or {Comando.bo_mes} = 05 or {Comando.bo_mes} = 07
or {Comando.bo_mes} = 08 or {Comando.bo_mes} = 10
or {Comando.bo_mes} = 12
then 31
Else If
{Comando.bo_mes} = 04 or {Comando.bo_mes} = 06 or
{Comando.bo_mes} = 09 or {Comando.bo_mes} = 11
then 30
Else If
{Comando.bo_mes} = 02 and
(Remainder ({Comando.bo_year}, 4) = 0 and Remainder({Comando.bo_year}, 100) <> 0) or
(Remainder ({Comando.bo_year}, 400) = 0) then 29
else 28
YA QUE COMANDO.BO_MES ME DEVUELVE EL NUMERO DE MES SEGUN MI BASE DE DATOS
O LO PUEDES HACER DE LA SIGUIENTE MANERA:
If
Month({Orders.Order Date}) = 01 or Month({Orders.Order Date}) = 03 or
Month({Orders.Order Date}) = 05 or Month({Orders.Order Date}) = 07 or
Month({Orders.Order Date}) = 08 or Month({Orders.Order Date}) = 10 or
Month({Orders.Order Date}) = 12
then 31
Else If
Month({Orders.Order Date}) = 04 or Month({Orders.Order Date}) = 06 or
Month({Orders.Order Date}) = 09 or Month({Orders.Order Date}) = 11
then 30
Else If
Month({Orders.Order Date}) = 02 and
(Remainder(Year({Orders.Order Date}), 4) = 0 and Remainder(Year({Orders.Order Date}), 100) <> 0) or
(Remainder(Year({Orders.Order Date}), 400) = 0) then 29
else 28