日付が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番目(およびそれ以上)のオプションはありますか?