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

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

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

■1567 / inTopicNo.1)  IF文の条件式について
  
□投稿者/ およよ -(2006/10/21(Sat) 20:11:36)
    ver9sp1です。

    test.wfmを実行し、[入金日]を入力・編集した時の動作を入力後イベ
    ントで制御しようと思っています。
     添付のkevそのままだと、[締日]>30で[年度開始日]の1ヵ月後から
    1ヶ月間の日付を[入金日]に入れるとコマンドエラーになります。
    サンプルデータで言えば5件目の[入金日]に
    2006/5/31以前入力→メッセージボックス表示(正常動作)
    2006/7/1以降入力→メッセージボックス表示(正常動作)
    2006/6/1〜2006/6/30入力→コマンドエラー
    となります。どうしてかわかりません。
    if文の条件式の評価が通る時と通らない時の違いはなんでしょうか。
    宜しくお願いします。

    ちなみに[締日]≦30の時は問題ありません。
    又、kevの12行目をコメントアウトして11,13,16行目を生かすと
    2006/6/1〜2006/6/30入力で正常動作となります。


test.lzh
/7KB
引用返信 [メール受信/OFF] 削除キー/
■1568 / inTopicNo.2)  Re[1]: IF文の条件式について
□投稿者/ 今村 誠 -(2006/10/21(Sat) 22:41:18)
    およよさんこんにちは、日時値生成はあり得ない
    エラーの日を生成しようとするとイベントがメッ
    セージを出します。
    年度開始日を18.2.1にして2月30日を入力しても
    同じエラーが出ると思いますがいかがでしょうか?
    年と月が分かったらいくら締め日に月末より大きい
    日にちがあっても、月末になるようにした方がいい
    と思います。
引用返信 [メール受信/OFF] 削除キー/
■1570 / inTopicNo.3)  Re[2]: IF文の条件式について
□投稿者/ およよ -(2006/10/22(Sun) 08:41:19)
    今村 誠さん こんにちは お世話になります。

    > およよさんこんにちは、日時値生成はあり得ない
    > エラーの日を生成しようとするとイベントがメッ
    > セージを出します。
    上記の場合のメッセージは
    "日時型入力に誤りがあります。…"
    ですが、この場合のコマンドエラーは
    "KU1090:コマンドの形式に誤りがあります"
    となります。
    サンプルでは5件目([コード]=5)の入金日に"6/1"と入力すれば再現できる
    と思います。

    何で同じ条件式を評価してコマンドエラーがでたり、でなかったりするのか
    何で条件式を2分化するとコマンドエラーが出なくなるのか
    わからないのです。

    又、[締日]に関しては
    1.指定日方式→1〜30
    2.月末指定→31
    3.指定なし→99
    ということにしています。

引用返信 [メール受信/OFF] 削除キー/
■1571 / inTopicNo.4)  Re[3]: IF文の条件式について
□投稿者/ 今村 誠 -(2006/10/22(Sun) 10:09:55)
    およよさんこんにちは
    > 又、[締日]に関しては
    > 1.指定日方式→1〜30
    > 2.月末指定→31
    > 3.指定なし→99
    > ということにしています。
    指定日方式は月末日より小さい時は指定日
    そうでない場合は月末になるのじゃないでしょうか?
    2月に29日や30日は無いので指定できないと思いますが
    その時の処理が文章で書いてないように思います。

    また[締日]を使った日時値生成の部分を手直ししてから
    もう一度質問された方がいいと思います。

    月日の条件判断の式でエラーがでる場合30日と31日と28日
    の月末の前後の月でエラーに規則性があるのでもう一度検
    討されてみたらいいと思います。
引用返信 [メール受信/OFF] 削除キー/
■1574 / inTopicNo.5)  Re[4]: IF文の条件式について
□投稿者/ およよ -(2006/10/22(Sun) 13:57:18)
    今村 誠さんこんにちは 有難うございます。
    やっと、おっしゃてる事の意味がわかりました。

    elseifの条件式で引っかかっていたのですね!!
    コマンドエラーのポップアップでは12行目と出ているし、
    [締日]=31の時のエラーなのでそちらばかり考えていました。
    実際は17行目でエラーになっていたんですね。

    if文の条件分岐のいい勉強になりました。

    elseifの条件を2分して対応させることにしました。

    [締日]については実際のところ20日,25日,月末,なし
    しか今のところないので、そのうち時間を見て考えます。

    5: 手続き定義開始 t入金日::入力後(...)
    6:  代入 &入金日=#日時値(&編集文字列)
    7:  確認 "&入金日="+#日時文字列(&入金日,9,1,2)
    8:  確認 "#月数加算([年度開始日],1,1)="+...
    9:  確認 "#月末(#月数加算([年度開始日],1,1))="+...
    10:    
    11: * if (&入金日≠"" .and [締日]≧31)
    12:  if (&入金日≠"" .and [締日]≧31 .and ( &入金日<#月数加算([年度開始日],1,1) .or &入金日>#月末(#月数加算([年度開始日],1,1))))
    13: *  if ( &入金日<#月数加算([年度開始日],1,1) .or &入金日>#月末(#月数加算([年度開始日],1,1)))
    14:    メッセージボックス "5入金日(締日月末他)" , "入金日の日付が5月度の範囲外です。" , アイコン=E, ボタン指定=1
    15:    &入力継続=0
    16: *  end
    17:  else if (&入金日≠"" .and [締日]<31)
    18: if( .not &入金日>#日時値生成( #年( #月数加算( [年度開始日], 0 , 1 )) , #月( #月数加算( [年度開始日], 0 , 1 )) , [締日] )\
    19:   .and &入金日≦#日時値生成( #年( #月数加算( [年度開始日], 1 , 1 )) , #月( #月数加算( [年度開始日], 1 , 1 )) , [締日] ))
    20:   メッセージボックス "5入金日(締日月末他以外)" , "入金日の日付が5月度の範囲外です。" , アイコン=E, ボタン指定=1
    21:   &入力継続=0
    22:   end
    23:  end
    24:  確認 "t入金日 入力後イベント終了"
    25: 手続き定義終了


解決済み!
引用返信 [メール受信/OFF] 削除キー/



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

このトピックに書きこむ

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

Mode/  Pass/

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

- Child Tree -
- Antispam Version -