(現在 過去ログ25 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■3763 / inTopicNo.1)  日付文字列を、日時値変換時にエラー表示をする方法
  
□投稿者/ たゆー -(2008/08/02(Sat) 10:00:42)
    お世話さまです。

    日付文字列を日時値に変換するとき、実際にありえない日付の場合、エラー表示

    ・日付文字列・・先頭に必ず「平成・昭和」のどちらかが、入ってます
    ・データによっては「平成1年」でなく「平成元年」もあります
    ・文字列の為、ありえない日付データもあります
     1月32日・うるう年でないのに、2月29日
    ・昭和64年は1月7日までですが、昭和70年は5月10日
    ・元データが手入力のため、平成5月10月20日のような「年月日」の単純入力ミス
    ・・・・

    [日付文字列]・・・文字列
    [変換年月日]・・・日時
    の、場合

    項目置き換えで #日時値([日付文字列])を行うと、エラーでなく
    >うるう年でないのに、2月29日
    の場合は「2月1日」と変換されてしまいます


    桐HELPより
    #日時値(str)
    変換後の値が、日時型の範囲外になる場合、年月日の範囲外の部分が 1 になり、時分秒の範囲外の部分が 0 になります。

    作業項目等の追加でも結構です。上記「範囲外の部分が 1 になり」でなく、作業項目にエラー(1 or 0でも可)を表示し
    その判定結果で、「#日時値(str)」の利用を考えています

    上記方法でなくてもいいのですが、実際にありえない日付の場合、何らかのエラー表示を
    する方法をご指導願えませんでしょうか

    もちろん、作業項目の追加でなく、イベントでも結構です。よろしくお願いいたします


引用返信 [メール受信/OFF] 削除キー/
■3764 / inTopicNo.2)  Re[1]: 日付文字列を、日時値変換時にエラー表示をする方法
□投稿者/ 通りすがり -(2008/08/02(Sat) 10:57:28)
    通りすがりで、思いつき適当に書いてみる

    日時値に変換したものを、もう一度日付文字列に変換戻して、最初のデータと比べる
引用返信 [メール受信/OFF] 削除キー/
■3765 / inTopicNo.3)  Re[2]: 日付文字列を、日時値変換時にエラー表示をする方法
□投稿者/ bonito -(2008/08/02(Sat) 13:38:44)
    たゆうさんのお役に少しでもたてればと...
    でももう答えは出てますね

    >日時値に変換したものを、もう一度日付文字列に変換戻して、最初のデータと比べる

    私が実際やっている方法

    [年月]  文字列  形式:YYYY-MM フォームのグループ項目なのでKEVで自動生成
    [日]   整数   フォームで入力
    [年月日] 日時   計算項目 #日時値([年月]+"-"+#文字列([日],2))

    [日]の行制約式   #日付([年月日],1)=[年月]+"-"+#文字列([日],2)
    エラーメッセージ  日付が不正です

    日付不正の頻度はあまり多くないので今のところこれでいいかなぁと...
    [日]の入力系イベントを使えばリアルタイム(行の確定を待たずに)に処理できますが
引用返信 [メール受信/OFF] 削除キー/
■3766 / inTopicNo.4)  Re[1]: 日付文字列を、日時値変換時にエラー表示をする方法
□投稿者/ 今村 誠 -(2008/08/02(Sat) 16:20:20)
    たゆーさんこんにちは[変換年月日]の計算式か置換式に
    下記の式で未定義値がエラーの日付となります。
    西暦だったり、2月30日だったりですね

    #計算(#代入(&STR,#sstr(#trim([日付文字列],3),1,2)
    +#S(#S(#S(#S(#S(#S(#半角(#trim([日付文字列],3))
    ,"元年","1年"),"年",","),"月",",")
    ,"ー",","),"/",","),"-",","))
    ,#cond(
    #sstr(&STR,1,2)="昭和"
    .or #sstr(&STR,1,2)="平成"
    .and #L(&STR)-#L(#S(&STR,",",""))=2
    ,#cond(
    #日付(#sstr(&STR,1,2)
    +#str(#num(#対応文字列(&STR,1)),2)
    +"年"+#str(#num(#対応文字列(&STR,2)),2)
    +"月"+#str(#num(#対応文字列(&STR,3)),2)+"日",1)
    =
    #str(#西暦年(#sstr(&STR,1,2)
    +#str(#num(#対応文字列(&STR,1)),2)))
    +"-"+#str(#num(#対応文字列(&STR,2)),2)
    +"-"+#str(#num(#対応文字列(&STR,3)),2)
    ,#日時値(#sstr(&STR,1,2)
    +#str(#num(#対応文字列(&STR,1)))
    +"年"+#str(#num(#対応文字列(&STR,2)))
    +"月"+#str(#num(#対応文字列(&STR,3)))+"日")
    ,1,"")
    ,1,""))
引用返信 [メール受信/OFF] 削除キー/
■3767 / inTopicNo.5)  Re[2]: 日付文字列を、日時値変換時にエラー表示をする方法
□投稿者/ たゆー -(2008/08/02(Sat) 17:11:44)
    No3766に返信(今村 誠さんの記事)

    今村さんこんにちは
    いつもすごい計算式を考えられますね。で、早速試してみました

    エラー対応しながら、ほぼ、「#日時値(str)」と同じ結果を出しますね
    ほぼと書いた理由は

    日時文字列      桐「#日時値」   今村計算式
    平成10年5月32日   平成10年5月1日    空白
    平成10年2月29日   平成10年2月1日    空白

    平成元年5月10日   平成5年1月10日   平成1年5月10日
    平成5月5月10日   平成5年5月10日   平成5年5月10日

    参考にさせていただきます。ご意見ありがとうございました
引用返信 [メール受信/OFF] 削除キー/
■3768 / inTopicNo.6)  Re[3]: 日付文字列を、日時値変換時にエラー表示をする方法
□投稿者/ たゆー -(2008/08/02(Sat) 17:12:46)
    bonitoさん>こんにちは。毎日暑いですね

    > 私が実際やっている方法
    ・・・・・
    ご紹介ありがとうございます。入力時にエラーチェックしておけば
    あとあと楽ですね

    ただ今回は、他で入力された既存データの加工ですので、結局要チェックと
    なった訳です。約 15,000ファイル、400Mくらいから入力エラーを探して修正する
    作業での話でした

    ご意見ありがとうございました


引用返信 [メール受信/OFF] 削除キー/
■3769 / inTopicNo.7)  Re[2]: 日付文字列を、日時値変換時にエラー表示をする方法
□投稿者/ たゆー -(2008/08/02(Sat) 17:13:36)
    No3764に返信(通りすがりさんの記事)
    通りすがりさん>
    > 通りすがりで、思いつき適当に書いてみる
    > 日時値に変換したものを、もう一度日付文字列に変換戻して、最初のデータと比べる
    この思いつき最高ですね。少しデータをみながら検討させていただきます。
    ありがとうございました
解決済み!
引用返信 [メール受信/OFF] 削除キー/
■3770 / inTopicNo.8)  Re[3]: 日付文字列を、日時値変換時にエラー表示をする方法
□投稿者/ 今村 誠 -(2008/08/02(Sat) 17:53:38)
    たゆさんこんにちは下記の日付の日時の結果は
    結局どうなってほしかったのですか。
    1) 平成元年5月10日
    2) 平成5月5月10日
    3) 昭和70年は5月10日
    4) 平成10年5月32日
    5) 平成10年5月32日

    私は、
    1) 平成1年5月10日
    2) 平成5年5月10日
    3) 平成7年5月10日
    4) エラー=未定義値
    5) エラー=未定義値
    だと思っていました。

    1)番は,"元年","1年")を削除すれば
     エラー=未定義値となりますよね。
    3)番は西暦でなく和暦で比較すれば
     解決する問題ですね。
    私は変換が目的で、エラー表示は間違った日付のみと
    思っていました。
    少しでも間違った日付を探すのが目的だったのですか。

引用返信 [メール受信/OFF] 削除キー/
■3771 / inTopicNo.9)  Re[4]: 日付文字列を、日時値変換時にエラー表示をする方法
□投稿者/ たゆー -(2008/08/02(Sat) 18:13:13)
    今村さんありがとうございます
    最終的には、正しい答えを出す必要がありますが、今回の質問は間違ったデータを探すのが目的でした

    > 2) 平成5月5月10日
    >
    > 私は、
    > 2) 平成5年5月10日

    > 私は変換が目的で、エラー表示は間違った日付のみと
    > 思っていました。
    > 少しでも間違った日付を探すのが目的だったのですか。
    そうですね。でも参考になりました。ありがとうございました

引用返信 [メール受信/OFF] 削除キー/
■3772 / inTopicNo.10)  Re[5]: 日付文字列を、日時値変換時にエラー表示をする方法
□投稿者/ 今村 誠 -(2008/08/02(Sat) 20:22:37)
    2008/08/02(Sat) 20:27:41 編集(投稿者)

    たゆーさんこんにちは日付以外の文字列が入ったところが
    エラーです。文字列で作業項目を作って下さい。

    #計算(#代入(&STR,#S(#trim(#半角([日付文字列]),4),",","ξ"))
    ,#代入(&STR,#S(&STR,2,#sstr(&STR,1,2)))
    ,#代入(&STR,#S(&STR,3,#sstr(&STR,3,#文字位置(&STR,"年")-1-2)))
    ,#代入(&STR,#S(&STR,4,#sstr(&STR
    ,#文字位置(&STR,"年")+1,#文字位置(&STR,"月")-1-#文字位置(&STR,"年"))))
    ,#代入(&STR,#S(&STR,5,#sstr(&STR
    ,#文字位置(&STR,"月")+1,#文字位置(&STR,"日")-1-#文字位置(&STR,"月"))))
    ,#cond(
    .not (#sstr(&STR,1,2)="昭和".or #sstr(&STR,1,2)="平成")
    ,"元号が間違っています"
    ,#文字位置(&STR,"年")<1,"年の記入漏れです。"
    ,#文字位置(&STR,"月")<1,"月の記入漏れです。"
    ,#文字位置(&STR,"日")<1,"日の記入漏れです。"
    ,#文字位置(&STR,"月")-#文字位置(&STR,"年")<1
    ,"月の位置が規定外です。"
    ,#文字位置(&STR,"元年")>0,"元年は禁止です"
    ,#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(
    &STR,"平成",""),"昭和",""),"年",""),"月",""),"日","")
    ,"1",""),"2",""),"3",""),"4",""),"5","")
    ,"6",""),"7",""),"8",""),"9",""),"0",""),",","")<>""
    ,"想定外の文字列が入力されています。"
    ,#num(#対応文字列(&STR,3))>64 .and #sstr(&STR,1,2)="昭和"
    ,"昭和は64年迄にして下さい。"
    ,#num(#対応文字列(&STR,3))>64,"年が規定以上です。"
    ,#num(#対応文字列(&STR,3))<1,"年の入力がありません。"
    ,#num(#対応文字列(&STR,4))>12,"月は12月迄にして下さい。"
    ,#num(#対応文字列(&STR,4))<1,"月が入力されていません。"
    ,#num(#対応文字列(&STR,5))>31,"日は31日迄にして下さい。"
    ,#num(#対応文字列(&STR,5))<1,"日が入力されていません。"
    ,#日付(#対応文字列(&STR,2)
    +#str(#num(#対応文字列(&STR,3)),2)
    +"年"+#str(#num(#対応文字列(&STR,4)),2)
    +"月"+#str(#num(#対応文字列(&STR,5)),2)+"日",1)
    =
    #str(#西暦年(#対応文字列(&STR,2)
    +#str(#num(#対応文字列(&STR,3)),2)))
    +"-"+#str(#num(#対応文字列(&STR,4)),2)
    +"-"+#str(#num(#対応文字列(&STR,5)),2)
    ,#cond(#sstr(#tistr(#日時値(#sstr(&STR,1,2)
    +#str(#num(#対応文字列(&STR,3)))
    +"年"+#str(#num(#対応文字列(&STR,4)))
    +"月"+#str(#num(#対応文字列(&STR,5)))+"日")
    ,3,1,2),1,2)=#sstr(&STR,1,2),
    #tistr(#日時値(#sstr(&STR,1,2)
    +#str(#num(#対応文字列(&STR,3)))
    +"年"+#str(#num(#対応文字列(&STR,4)))
    +"月"+#str(#num(#対応文字列(&STR,5)))+"日")
    ,3,1,2),1,"元号と日付の不一致")
    ,1,"日付が間違っています。"))

引用返信 [メール受信/OFF] 削除キー/
■3775 / inTopicNo.11)  Re[1]: 日付文字列を、日時値変換時にエラー表示をする方法
□投稿者/ ONnoji -(2008/08/04(Mon) 10:58:09)
    > 上記方法でなくてもいいのですが、実際にありえない日付の場合、何らかのエラー表示を
    > する方法をご指導願えませんでしょうか
    > もちろん、作業項目の追加でなく、イベントでも結構です。

    すでに解決しているようですが〜。(^^ゞ

    最近、以下の項目計算式を作ってみましたよ。

    整数型の項目[年][月][日]に値が入力されている時、
    整数型の項目[invalidDate]の項目計算式で誤った入力か判定する。
    誤りの場合、1(イチ)。正しい場合、0(ゼロ)になります。

    ■[invalidDate]の項目計算式

    #日付( #日時値( #str([年]) + "-" + #str([月]) + "-" + #str([日]) ) , 1) <> #str([年]) + "-" + #str([月],2) + "-" + #str([日],2)

引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -