注意点を 1 つ追加すると、これらの関数が生成する日付範囲は、現在の日付に依存します。たとえば、今日の日付が 2000 年 9 月 18 日である場合、LastFullMonth は次の日付型範囲値になります。
CDate(#2000/8/1#) To CDate(#2000/8/31#)
通常、この機能は便利ですが、場合によっては、{Orders.受注日}などのデータベース フィールドを基準にして日付範囲を決定する必要も生まれます。その場合は、代わりに日付/時刻関数を使用します。
Basic 構文の記述例
Dim d As Date d = CDate ({Orders.受注日}) Dim dr As Date Range dr = DateSerial (Year(d), Month(d) - 1, 1) To _ DateSerial (Year(d), Month(d), 1 - 1) 'この時点で dr は、{Orders.受注日} の前月の 'すべての日付を保持する日付型範囲値になります
Crystal 構文の記述例
Local DateVar d := CDate ({Orders.受注日}); Local DateVar Range dr; dr := DateSerial (Year(d), Month(d) - 1, 1) To DateSerial (Year(d), Month(d), 1 - 1); //この時点で dr は、{Orders.受注日}の前月の //すべての日付を保持する日付型範囲値になります
DateSerial 関数を使用すると、特殊なケースに悩む必要なく、簡単に処理できます。この関数では、不正な日付が作成されることはありません。たとえば、DateSerial(1999, 1 - 1, 1)は 1998 年 12 月 1 日になります。上の例の{Orders.受注日}は、実際には日時型のフィールドなので、CDate 関数を使って時刻部を切り捨て、日付に変換していることに注意してください。