Q84:単体のアプリケーションとして扱う場合は正常に動作するのですが、複合コンポーネントにすると初めて画面を開くとき、日付が2057年5月1日になってしまいます。
Q84-1:
プログラムで、画面を開いた瞬間に昨日の日付をセットする処理を記述しております。
1.項目の初期化(NULLセット)
2.SQLで今日の日付を取得
3.取得した日付を画面(日付項目)にセット
以上の流れで処理しています。
単体のアプリケーションとして扱う場合は正常に動作するのですが、複合コンポーネントにすると初めて画面を開くとき日付が、2057年5月1日になってしまいます。一度呼び出し元に戻してから再度開くと正常な日付になっているのですが呼び出し元のプログラムを初めて起動した時のみこの現象が発生します。なぜこのようになるのか教えて頂けますか?
A84-1:
[日付入力フィールド]の表示モードを各タイミングで変更して頂いていますが、特に「初めて画面を開く時」に[日付入力フィールド]の表示モードを、ご確認下さい。設定される日付データと表示書式が違うと、全く違うデータとして扱われる可能性があります。
以下お問い合わせの内容とは関係がありませんが、現在、どんな日時を設定しても必ず「2009年」になるようになっていますが、12月31日〜1月1日等、年をまたぐ場合はまた別な処理が必要でしょうか?
現在日付を一日ずらすなどは[カレンダー]コンポーネントの「メソッド:設定されている日時から日数を減算(int)」でも実現できますので、よろしければお試し下さい。
備考:「日付入力フィールド」の「Q&A3」にも掲載。