1

Crystal Reports 2011 を使用しており、YEAR (行) と MONTH (列) ごとにデータを表示するクロスタブがあります。いつでも 3 年分のデータを報告する必要がありますが、4 月になると、古い年を削除して新しい年を取得する必要があります。

たとえば、現在は 2 月なので、2010 年、2011 年、2012 年をレポートしています。4 月 1 日がヒットしたら、2011 年、2012 年、2013 年をレポートします。したがって、レポートでは 2010 年を削除し、2013 年を取り上げます。レポートがレポートする年を自動的に変更するように、これを自動化しようとしています。

さまざまなレコード選択式を試しましたが、目的の年を返す式を突き止めることができませんでした。年は現在手動で調整されています。毎年 4 月 1 日に、手動でレポートを調整して 3 年前のデータを削除し、今年のデータを含め始めます。

これについてどうすればよいかについての提案を探しています。助けてくれてありがとう!

4

1 に答える 1

1

コメントで適切な日付範囲を誤って記述したと思いますが、これを正しく理解していれば、次のことを行うための式が必要です。

  • 今日実行すると、レポートには 2010 年 1 月 1 日から 2012 年 12 月 31 日までのデータが表示されます。
  • 4 月 1 日に実行すると、2011 年 1 月 1 日から 2013 年 4 月 1 日までのデータが表示されます。

これを行うために、次の数式フィールドを考え出しました。

  • という式フィールドを作成しますDateRangeFrom。次のものが含まれている必要があります。

    IF datepart("m", CurrentDate) < 4 THEN
    // 1 月から 3 月の場合は 3 年前を表示します DateSerial (Year(DateAdd("yyyy", -3, CurrentDate)), 1, 1) そうしないと // 4 月から 12 月の場合は 2 年前を表示します DateSerial (Year(DateAdd("yyyy", -2, CurrentDate)), 1, 1)

  • という別の式を作成しますDateRangeTo。次のものが含まれている必要があります。

    IF datepart("m", CurrentDate) < 4 THEN
    // 1 月から 3 月の場合は 1 年さかのぼって表示します DateSerial (Year(DateAdd("yyyy", -1, CurrentDate)), 12, 31) そうしないと // 4 月から 12 月までの場合は、現在の日付まで表示します 現在の日付

  • これらのフィールドは、次のようにレコード選択式で使用できます。

    {YourTable.YourDateColumn} > {@DateRangeFrom}
        AND {YourTable.YourDateColumn} <= {@DateRangeTo}
     

編集:

年だけで検索したい場合は、DateSerial関数を削除し、レコード選択式を>=の代わりに使用するように変更すると、次の>ようになります。

  • という式フィールドを作成しますDateRangeFrom。次のものが含まれている必要があります。

    IF datepart("m", CurrentDate) < 4 THEN
    // 1 月から 3 月の場合は 3 年前を表示します Year(DateAdd("yyyy", -3, CurrentDate)) そうしないと // 4 月から 12 月の場合は 2 年前を表示します Year(DateAdd("yyyy", -2, CurrentDate))

  • という別の式を作成しますDateRangeTo。次のものが含まれている必要があります。

    IF datepart("m", CurrentDate) < 4 THEN
    // 1 月から 3 月の場合は 1 年さかのぼって表示します Year(DateAdd("yyyy", -1, CurrentDate)) そうしないと // 4 月から 12 月までの場合は、現在の日付まで表示します 年(現在の日付)

  • これらのフィールドは、次のようにレコード選択式で使用できます。

    {YourTable.YourDateColumn} >= {@DateRangeFrom}
        AND {YourTable.YourDateColumn} <= {@DateRangeTo}
     

于 2013-02-13T16:42:53.243 に答える