過去の桐井戸端BBS (桐ver.8)
15102 日付型の入力をするときに数字だけで入力したい Rockey 2002/02/12-12:53
日付型項目に入力する際、2002.02.12 とか 02/12 とか入力するのが
わずらわしいので 連続入力を試みたのですが
例えば、12と入力したら #桁数で 1桁か2桁だったら&年、&月を参照して
&日付=#日時値(#str(&年)+"."+#str(&月)+"."+#str(#num(&入力日),2))
項目値代入 [日付]=&日付
ソース値更新 イベントで2002/02/12 と 項目値代入コマンドで
変換することにしました。
同様にに 213 や 0213と入力したら
if(#桁数(&入力日)=3)
&日付=#日時値(#str(&年)+".0"+#str(#num(#sstr(&入力日,1,1)),2)+"."+#str(#num(#sstr(&入力日,2,2)),2))
end
というふうに7桁入力まではうまくいきましたが
20020212と8桁入力した時に
計算する前に日付文字列に誤りがあります。とエラーメッセージ がでます。
桐内部で日付型をチェックする前に計算させる方法はありますでしょうか?
15104 Re:日付型の入力 佐田 守弘 2002/02/13-00:57
記事番号15102へのコメント
Rockeyさん
入力後イベントでこの処理を行って下さい。
おそらくそれで目的が達成できるはずです。

補足しますと
●ソース値更新イベント
入力のエディタが終了して、桐の表に値を書き込んだ直後に発生するイベントです。
従って、桐が日時型をチェックしております。

●入力後イベント
入力エディタを終了して、桐の表に書き込む前に発生するイベントです。
入力値を加工する場合には、この段階で行う必要があります。

もう1つ補足ですが、現在日付を取得する場合、&年、&月などの組込み変数値は当てになりません。
これは桐を起動した時の日付です。もしパソコンを起動したまま次の日になった場合には、
正しい日付にはなりません。
また、プログラマによっては、これらの変数を別の値の記録用に流用する場合もあります。
正しくは、#年(#日時値)、#月(#日時値)、ないしは、#年(#年月日)、#月(#年月日)
を使って下さい。

佐田守弘(KS-00119)
15105 Re:日付型の入力 2002/02/13-01:43
記事番号15102へのコメント
Rockeyさん、こんばんは。

年月日をそれぞれ独立の項目にして、編集初期値に#年、#月、#日、あたりを入れておき、
[日付]自体は日時値生成で計算させるという手はいかがでしょうか。

戻る