日付

Q1
年月や時刻のみの一部の数字入力だけで日付の表示をしたい 

A1
DateEditクラスでは、Formatプロパティの設定のみで実現可能です。

DateEditクラスは、日付入力専用のクラスのため、DateEdit自身が入力データを
”日付を表す文字列”として解析、Formatプロパティで入力項目として指定されていない
項目は補完して日付データとするため、「0217」など一部の数字入力のみで日付を表示
することが出来ます。

TextBoxやFlexTextBoxクラスなどは、数値データなども入力可能な汎用的なクラスで、
入力されるデータが日付に特化していないため、入力データ内で”日付”として不足して
いる項目をスクリプトで補完し、日付判断を行った後、結果を希望の書式に整形して
TextBox、FlexTextBoxに格納することで実現可能です。


[サンプルコード]

◆TextBoxに入力された値を日付判断し、YYYY/MM/DD形式に変換、表示する

TextBox TextBox1 {

    Function OnLostFocus( e ) {
        len = length( TRIM(Value) );/* 余分な空白を除去 */

        for ( i=0; i < len; i = i+1){

            /* 入力された文字を1文字ずつ判断 */
            txt = mid( Value, i, 1);
            if ( txt >= "0" & txt <= "9"){
                buf = buf + txt;
                s  = s + 1;
            } else {
                buf = buf + "/";
                cnt = cnt + 1;
            }
        }

        /* 日付の補完 */
        if (cnt == 0 ) {
            if (s <= 2){
                buf = str(year(sysdate())) + "/" + str(month(sysdate())) +
                                "/" +  buf;
            } else if (s == 3){
                buf = str(year(sysdate())) + "/" + mid( buf, 0, 1) + "/" +
                                mid( buf, 1, 2);
            } else if (s == 4){
                buf = str(year(sysdate())) + "/" + mid( buf, 0, 2) + "/" +
                                mid( buf, 2, 2);
            } else if (s >= 5){
                buf = mid( buf, 0, s-4) + "/" + mid( buf, s-4, 2) + "/" +
                                mid( buf, s-2, 2);
            }
        } else if ( cnt == 1 ){
            buf = str(year(sysdate())) + "/" +  buf;
        }

        if ( dateval(buf) == 0) {
            MessageBox("日付が不正です。");
        } else {
            /* 日付の整形 */
            Value = str(dateval(buf),"YYYY/MM/DD");
        }
    }
}
CRSファイル形式のサンプルを
  「一部の数字入力だけで日付を表示するサンプル (DtE_007.zip)
よりご利用いただけます。

管理番号: DtE_007
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ