1

日付がYYYY-MM-DDとして入力されることがある文字列フィールドがあり、CrystalReportに日付として表示しています。使っていた

DateValue ({Table.Field})

日付を表示し、日付をMM / DD/YYYYとしてフォーマットします。1931年10月12日の日付を見て、データベースにあるものと一致しないことがわかるまで、それは良さそうに見えました:「0010-12-31」。

これは単なるタイプミスであり、日付はおそらく2010年12月31日であることがわかりますが、入力内容を表示したいと思います。それで、今回だけ、私は以下を入れます:

if {Table.Field} = '0010-12-31' then
  Date(0010, 12, 31)
else
  DateValue ({Table.Field})

これを行うと、4桁の年を要求したにもかかわらず、2010年12月31日が表示されます。それはそれほど欺瞞的ではないので、私はそれで良いと思います。

しかし、Crystalは本当に古い日付のように見えるものをどうするべきでしょうか?

そして、さらに重要なことに、日付が別の形式で入力された場合、これは窒息するのでしょうか?そうなると思います。

if NOT (IsNull({Table.Field})) then
  Date(ToNumber (Left ({Table.Field}, 4)),
       ToNumber (Mid ({Table.Field}, 6, 2)),
       ToNumber (Right ({Table.Field}, 2))
      )

これは本当に質問です:

1)間違った日付を誤って表示した後、または2)自由形式の文字列の日付の形式が異なる場合に窒息を報告した後の3番目(およびそれ以上)のオプションはありますか?

4

1 に答える 1

0

2 つの数式を作成できます。1 つは日付で、もう 1 つは文字列です。「新しい」日付の日付バージョンと「古い」日付の文字列バージョンを表示します。文字列 one は、必要に応じて値を連結します。

// {@date_version}
DateValue ({Table.Field})

抑制ロジック:CurrentFieldValue<Date(1980,1,1)

// {@stirng_version}
{Table.Field}[6 to 7] + "/" + {Table.Field}[9 to 10] + "/19??"

抑制ロジック:{@date_version}>Date(1980,1,1)

于 2013-02-22T14:01:11.780 に答える