初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2014-11-23 11:11:16

NK
Member

OnObjectKeystrokeで免許証の期限を入力したい

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

#2 2014-11-23 13:23:21

Shin
Member

Re: OnObjectKeystrokeで免許証の期限を入力したい

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 If

https://dl.dropboxusercontent.com/u/926 … 98.fp7.zip

Offline

#3 2014-11-23 14:51:47

NK
Member

Re: OnObjectKeystrokeで免許証の期限を入力したい

ありがとうございます。

トリガーキー入力をあわせなければいけなかったんですね。
変数の使い方も勉強になります。

現在のスクリプト終了ステップの、結果0と1というのは、
何をさせているのでしょうか?

Offline

#4 2014-11-23 16:29:08

Shin
Member

Re: OnObjectKeystrokeで免許証の期限を入力したい

キー入力を有効にするか、無効にするかを変えています。
上の二つで結果を 1 にすると、2014/11/236 などと、トリガーされたキー入力が、フィールド設定後に追加されてしまいます。
逆に、最後の結果を 0 にすると、キー入力が捨てられてしまい、入力できなくなります。

Offline

#5 2014-11-24 11:36:31

NK
Member

Re: OnObjectKeystrokeで免許証の期限を入力したい

Shinさん、ありがとうございます!

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 554.14 KiB (Peak: 581.28 KiB) ]