みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Mac FMP13advです。
生年月日
免許期限
の二つのフィールドがあります。
生年月日が昭和60年8月1日とあり、
免許期限に"H28"と入力したら、
平成28年9月1日と自動で入力したいです。
免許期限に"2016"と入力しても、同様に動く。
ただし、期限が入力日以前であれば、入力したないようがリセットされて空白になる。
免許期限フィールドにOnObjectKeystrokeでスクリプトを。
スクリプト引数はGet(アクティブフィールド内容)
If
Length(Get ( スクリプト引数 ))=3 and
Length(Filter(Get ( スクリプト引数 );"0123456789"))=2
であれば
フィールド設定で
Case(
Date ( Month ( スタッフM_EmployeeM::生年月日 ) + 1; Day ( スタッフM_EmployeeM::生年月日 ) ; Get ( スクリプト引数 ) ) ≥ Get ( 日付 );
Date ( Month ( スタッフM_EmployeeM::生年月日 ) + 1; Day ( スタッフM_EmployeeM::生年月日 ) ; Get ( スクリプト引数 ) ) ;
""
)
ElseIf
Length(Get ( スクリプト引数 ))=4 and
Length(Filter(Get ( スクリプト引数 );"0123456789"))=4
で同様にフィールド設定
EndIf
としてみましたが、うまくいきません。
どうしたらいいかアドバイスをお願いいたします。
Offline
OnObjectKeystroke では、キーが押された、というトリガーで動きますので、フィールドは触られている前です。ですから、スクリプト側で、フィールドに設定する値を作成する必要が有り、また、終了した時に押されたキーの情報を生かすか、キャンセルしておく必要が有ります。ですから、ちょっと面倒な処理が必要です。
変数を設定 [ $cont; 値:Get ( アクティブフィールド内容 ) & Get ( トリガキー入力 ) ]
変数を設定 [ $d; 値:
Let (
d = GetAsDate ( $cont & "/" & Month ( テーブル::生年月日 ) + 1 & "/" & Day ( テーブル::生年月日 ) ) ;
Case (
d ≥ Get ( 日付 ) ; d ; ""
)
)
]
If [ Length ( $cont ) = 3 and Length ( Filter ( $cont ; "0123456789" ) ) = 2 ]
フィールド設定 [ $d ]
現在のスクリプト終了 [ 結果: 0 ]
Else If [ Length ( $cont ) = 4 and Length ( Filter ( $cont ; "0123456789" ) ) = 4 ]
フィールド設定 [ $d ]
現在のスクリプト終了 [ 結果: 0 ]
Else
現在のスクリプト終了 [ 結果: 1 ]
End IfOffline
ありがとうございます。
トリガーキー入力をあわせなければいけなかったんですね。
変数の使い方も勉強になります。
現在のスクリプト終了ステップの、結果0と1というのは、
何をさせているのでしょうか?
Offline
キー入力を有効にするか、無効にするかを変えています。
上の二つで結果を 1 にすると、2014/11/236 などと、トリガーされたキー入力が、フィールド設定後に追加されてしまいます。
逆に、最後の結果を 0 にすると、キー入力が捨てられてしまい、入力できなくなります。
Offline
Shinさん、ありがとうございます!
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 554.09 KiB (Peak: 581.23 KiB) ]