| ふうやんさん質問は条件を詳しく説明しないと今回のような結果を生みます。 > 納品書の新規追加で 顧客番号 → 年 → 月 → 日 → 品名 の項目へと > カーソルを手動で移動してますが 年・月・日 の項目を飛ばして > 顧客番号から品名の項目にカーソルが行くようにしたいのですが > イベントでどう書くのでしょうか。 > 勿論その時には年・月・日の各項目に当日の表示がされるということで。 > (年・月・日はカーソル移動で当日の日が表示されてます。) No.8204 の納品書サンプルwfmにおいて上記↑の事を実現するには どのようなイベントを書いたらよいですか? と質問すればもっと早く回答がついたでしょう。 以下にイベントの具体例を書きます。
名札 メイン var 局所,文字列{&S締日,&S顧客番号},局所,整数{&I確認}
*
手続き定義開始 顧客番号::ソース値更新() var int{&Iend},date{&D締日} method @顧客番号.グループソース値取得(&S顧客番号,0) method @b締日算出.実行() /* 機能名1に「なし」パラメーターに下記の式を設定 */ if (&S締日<>"") /* #代入(&S締日,#表引き(&S顧客番号,=,"顧客.TBL",[顧客番号],[締日],"",1)) */ &D締日=#COND(&S締日="月末",#月末(#日時値),#日(#日時値)>#num(&S締日)\ ,#日時値生成(#年(#月数加算(#日時値,1,1)),#月(#月数加算(#日時値,1,1)),#num(&S締日))\ ,1,#日時値生成(#年(#日時値),#月(#日時値),#num(&S締日))) グループ値代入 [顧客番号]=&S顧客番号,[請求番号]="",[納年]=#年(#日時値),[納月]=#月(#日時値)\ ,[納日]=#日(#日時値),[締年]=#年(&D締日),[締月]=#月(&D締日),[締日]=#日(&D締日) method @b行追加.実行() /* 機能名1にグループ追加を割り当て */ else /* 機能名2に行追加を割り当ててパラメータで"t品名・品番"を指定 */ 確認 "締め日が設定されていません" end 手続き定義終了
手続き定義開始 顧客番号::入力後(参照 文字列 &編集文字列,長整数 &モード,参照 長整数 &入力継続) if (#L(&編集文字列)<4) &入力継続 = 1 else if (#L(&編集文字列)>4) メッセージボックス "[顧客番号]","顧客番号は4文字以内です",アイコン = i &編集文字列 = #sstr(&編集文字列,1,4) &入力継続 = 1 else &S顧客番号 = &編集文字列 /* ボタンで表引きするために比較値を変数代入 */ method @b顧客名表引.実行() /* ボタンの機能名1になしを設定しパラメーターに下記の式を代入 */ /* #代入(&I確認,#cond(#表引き(&S顧客番号,=,"顧客.TBL",[顧客番号],[名前],"",1)<>"",1,1,0)) */ if (&I確認 = 0 ) /* 顧客テーブルに顧客番号の該当がない場合 */ メッセージボックス "[顧客番号]","入力した顧客番号に該当者が居ません。",アイコン = i &編集文字列 = #sstr(&編集文字列,1,3) &入力継続 = 1 end end 手続き定義終了
********************* このイベントのポイントはイベント文中にもあるようにワークスペースに 表引き用にボタンを2個作成すること。 グループ追加用にさらに1個作成することです。 解らない語句は桐を起動してヘルプ→キーワード→四角い箱に入力→ 右下の「表示」ボタンを押します。 ボタンやテキストやラベルなどのオブジェクト名が適当な名付けを していますが、オブジェクト名が赤い文字は整合性に問題があります。 具体的に言えば質問の味噌のオブジェクトである「顧客番号」が ラベルとグループオブジェクトに同名となっています。 このようなトラブルを未然に防ぐためにオブジェクトの種類毎に 接頭子を付ける習慣を身につけて下さい。 例えばテキストオブジェクトには「t品名・品番」 その項目名を表示するラベルオブジェクトには「a品名・品番」 グループオブジェクトには「g請求番号」 コマンドボタンには「b行追加」や「b締日算出」 等のように分かり易い接頭子を付けることで紛れが無くなります。 また変数宣言(Var)にしても文字列(STR)変数に&S締日や 日時(date)変数にD締日また整数(Int)変数にIend等と名付けると 計算式を書く場合でも間違いが減ると思います。
|