Cette catégorie de fonction a été traitée dans la section
Données de type plage (syntaxe Crystal). Le commentaire suivant peut être ajouté : les plages de dates produites par ces fonctions dépendent de la date en cours. Par exemple, si nous sommes aujourd'hui le 18.09.99, LastFullMonth a la valeur de plage de dates suivante :
CDate(#Aug 1, 1999#) To CDate(#Aug 31, 1999#)
Cette fonctionnalité est souvent utile, mais que se passe-t-il si vous voulez déterminer une plage de dates reposant sur un champ de base de données tel que {Commandes.Date de commande} ? Il est possible d'utiliser à la place les fonctions de type date et heure.
Par exemple :
Local DateVar d := CDate ({Orders.Order Date});
Local DateVar Range dr;
dr := DateSerial (Year(d), Month(d) - 1, 1) To
DateSerial (Year(d), Month(d), 1 - 1);
//At this point dr is the Date Range value holding
//the last full month before {Orders.Order Date}
La fonction DateSerial facilite le travail car vous n'avez pas à vous soucier des cas particuliers. Elle ne vous permet pas de créer une date non valide. Par exemple, DateSerial (1999, 1 - 1, 1) donne le 1er décembre 1998.
Remarque : Dans l'exemple ci-dessus, {Commandes.Date de commande} est en fait un champ de type date/heure et, de ce fait, la fonction CDate est utilisée pour la convertir en date en tronquant la partie horaire.