メインコンテンツへスキップ

日付入力時、年月を自動で補完したい。

コメント

13件のコメント

  • nkmt

    日付項目の書式は YYYY/MM/DDとか MM/DDとか、YYYY年MM月DD日とか
    他国だとその順番も変わったりしますが
    YYYY/MM/DDなどの書式欄に DD部分だけを入力すると、おそらく必ずエラーで弾かれると思います。
    確かにDDだけを入力すれば、2024/12/09などとなるのもいいなとは思います。
    システムによっては年の入力、月の入力、日の入力と3つのエディットを用意しているのもあります。

    あるいは日付型変数への入力ではなく、数値8桁を####¥/##¥/## という書式で入力させて
    数値8桁<=31なら、DD部分だけ入力されたのだと判断して、DSTR関数なども用いて日付型へ
    変換して、正しい入力がされたのか、自分で作り込むなどする事も可能だと思います。

  • nkmt

    あらゆる画面でDDだけの入力、MM/DDだけの入力で、YYYY/MM/DDへ補完してくれるシステムを作っていらっしゃる会社様もあるでしょうね。(追記:私はそのような事はしておりません。むしろお断りしています。)

    JRの緑の窓口などで職員さんがタッチ操作する操作の速さに驚く事があります。

  • Pu

    こんにちはPuです。
    for example)
    system日付が2024/12/01で、先月の伝票の処理(2024/11/30)を行おうとした場合
    日付に30と入力した場合どのように判断するのでしょうか?
    日付のみを入力させるのは現実的ではないような....
    でわ~でわ~

  • nkmt

    今月限定とか、今日の日が1~3なら前月とか、何かしらルール決めをしてDD入力での日付補完をお考えなのかわかりませんが。

  • nkmt

    9と入力したら2024/12/9とのご質問ご投稿なので当月補完をイメージされたのでしょうね。
    ふと思ったとの事ですので、実際にそれを求められた訳ではなく単に質問ですかね。

  • nkmt

    今日迄の日か明日までの日を入力した場合、今月。
    それ以外は先月。といったのも有りですかね。

  • Pu

    週末金曜日に翌週の月曜日の出荷予定を入力する事があるのでチョット厳しいかと
    そもそも日付だけ入力して年月を自動判断したいと言うのは
    プログラマーの発想で、SE的発想ではないかと思います あくまでも個人の感想ですが
    せめてMM/DDの入力位までが...

    でわ~でわ~

  • nkmt

    その入力する人が思っていたのと異なる日付で入力補完がされたら、またそこに戻って打ち直しですもんね。その懸念がある場合は、MM/DD入力をするよう心掛けるとか。

    最初のご質問の回答に戻しますと、YYYY/MM/DD入力で
    DD入力をしてもエラーになるだけだと思います>yamamotoさん

  • yamamoto

    nkmtさん、Puさんコメントありがとうございます。

    当年、当月補完をイメージしており

    9と入力したら「2024/12/09」 
    1209と入力したら「2024/12/09」前月を出したければ0109と入力して「2024/01/09」
    20241209と入力したら 「2024/12/09」前年を出したければ20231209と入力して「2023/12/09」
    となるようにして、入力の手間を省きたいということです。
     
    実験してみてどれくらい大変かで実装するかまた考えてみようと思います。
  • nkmt

    とにかくこの画面は入力速度を上げたいとかそういうシーンでは、文字8桁とか数字8桁の入力で、DSTR関数とかDVAL関数を用いて実現は出来ると思います。でも全部の日付入力でそれ頼むと言われたらやりたくないです。(^^)

  • Pu

    なるほど
    2桁以内であれば当月
    4桁の場合はMMDD
    6桁の場合はYYMMDD
    8桁の場合はYYYYMMDD
    に変換と言う事ですね。日付のチェックが面倒ですね2桁で31以上の数字をいらられたり
    月に12以上を入力されたりとか
    せっかくのMAGICの日付のチェック機能が....
    でわ~でわ~

     

  • nkmt

    1301とか
    1232とかMMDDではない数字を入れた場合は考慮していませんが
    以下で数値に2桁入力、4桁入力、8桁入力をしてそれを日付として判断する件、
    出来るような気がしますが実際には試しておりません。
    でもこれを考えたのは自分の為なのでとりあえず良しとします。
    DVAL(
      DSTR( 
       if( range( 数値,1,31), adddate(bom(date(),0,0,数値-1))
         , if( range( 数値,101,1231), adddata( boy( date(),0,fix(数値/100,2,0)-1,fix(数値,2,0)-1)
               , 数値))
          )
       , 'YYYYMMDD' )
    , 'YYYYMMDD' )

    みたいな関数をメインPGにユーザー関数として作成し、
    エラーの場合は、0を返すとかすればどんな場面でも省略入力も8桁入力も可能といった事は
    実現出来そうなので私としても為になりました。

  • yamamoto

    Puさん、nkmtさんコメントありがとうございます。

    ちなみに理想ですが、1月のみシステム日付を見てどちらの年が近いかチェックして

    近い年を自動表示するみたいなことが出来ればいいのにと思っております。

    1月が一番入力ミスが多いので、、、。

    また何かアイディア等ありましたらご助力頂きたいです。

サインインしてコメントを残してください。