Les plages de dates produites par ces fonctions dépendent de la date en cours. Par exemple, si nous sommes aujourd'hui le 18 septembre 2000, LastFullMonth a la valeur de plage de dates suivante :
CDate(#Aug 1, 2000#) To CDate(#Aug 31, 2000#)
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 Date/heure.
Exemple de syntaxe Basic
Dim d As Date d = CDate ({Commandes.Date de commande}) Dim dr As Date Range dr = DateSerial (Year(d), Month(d) - 1, 1) To _ DateSerial (Year(d), Month(d), 1 - 1) 'A ce point, dr est la valeur de plage de dates contenant 'le dernier mois complet précédent {Commandes.Date de commande}
Exemple de syntaxe Crystal
Local DateVar d := CDate ({Commandes.Date de commande}); Local DateVar Range dr; dr := DateSerial (Year(d), Month(d) - 1, 1) To DateSerial (Year(d), Month(d), 1 - 1); //A ce point, dr est la valeur de plage de dates contenant //le dernier mois complet précédant {Commandes.Date de commande}
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 valable. Par exemple, DateSerial (1999, 1 - 1, 1) donne le 1er décembre 1998. Notez que dans l'exemple ci-dessus, {Commandes.Date de commande} est en fait un champ DateHeure et, de ce fait, la fonction CDate est utilisée pour convertir la valeur en date en tronquant la partie horaire.