日付入力時、年月を自動で補完したい。
おはようございます。
日付入力を触っていた際、ふと思ったのですが
日付入力エディットで今日であれば9日の9を入力した時、
自動で2024年12月という情報をシステム年月等から引っ張ってこれないでしょうか?
ご存じの方いらっしゃれば教えて頂きたいです。
-
日付項目の書式は YYYY/MM/DDとか MM/DDとか、YYYY年MM月DD日とか
他国だとその順番も変わったりしますが
YYYY/MM/DDなどの書式欄に DD部分だけを入力すると、おそらく必ずエラーで弾かれると思います。
確かにDDだけを入力すれば、2024/12/09などとなるのもいいなとは思います。
システムによっては年の入力、月の入力、日の入力と3つのエディットを用意しているのもあります。
あるいは日付型変数への入力ではなく、数値8桁を####¥/##¥/## という書式で入力させて
数値8桁<=31なら、DD部分だけ入力されたのだと判断して、DSTR関数なども用いて日付型へ
変換して、正しい入力がされたのか、自分で作り込むなどする事も可能だと思います。 -
あらゆる画面でDDだけの入力、MM/DDだけの入力で、YYYY/MM/DDへ補完してくれるシステムを作っていらっしゃる会社様もあるでしょうね。(追記:私はそのような事はしておりません。むしろお断りしています。)
JRの緑の窓口などで職員さんがタッチ操作する操作の速さに驚く事があります。 -
こんにちはPuです。
for example)
system日付が2024/12/01で、先月の伝票の処理(2024/11/30)を行おうとした場合
日付に30と入力した場合どのように判断するのでしょうか?
日付のみを入力させるのは現実的ではないような....
でわ~でわ~ -
今月限定とか、今日の日が1~3なら前月とか、何かしらルール決めをしてDD入力での日付補完をお考えなのかわかりませんが。
-
9と入力したら2024/12/9とのご質問ご投稿なので当月補完をイメージされたのでしょうね。
ふと思ったとの事ですので、実際にそれを求められた訳ではなく単に質問ですかね。 -
今日迄の日か明日までの日を入力した場合、今月。
それ以外は先月。といったのも有りですかね。 -
週末金曜日に翌週の月曜日の出荷予定を入力する事があるのでチョット厳しいかと
そもそも日付だけ入力して年月を自動判断したいと言うのは
プログラマーの発想で、SE的発想ではないかと思います あくまでも個人の感想ですが
せめてMM/DDの入力位までが...でわ~でわ~
-
その入力する人が思っていたのと異なる日付で入力補完がされたら、またそこに戻って打ち直しですもんね。その懸念がある場合は、MM/DD入力をするよう心掛けるとか。
最初のご質問の回答に戻しますと、YYYY/MM/DD入力で
DD入力をしてもエラーになるだけだと思います>yamamotoさん -
とにかくこの画面は入力速度を上げたいとかそういうシーンでは、文字8桁とか数字8桁の入力で、DSTR関数とかDVAL関数を用いて実現は出来ると思います。でも全部の日付入力でそれ頼むと言われたらやりたくないです。(^^)
-
なるほど
2桁以内であれば当月
4桁の場合はMMDD
6桁の場合はYYMMDD
8桁の場合はYYYYMMDD
に変換と言う事ですね。日付のチェックが面倒ですね2桁で31以上の数字をいらられたり
月に12以上を入力されたりとか
せっかくのMAGICの日付のチェック機能が....
でわ~でわ~ -
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桁入力も可能といった事は
実現出来そうなので私としても為になりました。
サインインしてコメントを残してください。
コメント
13件のコメント