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

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

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

You are not logged in.

Announcement

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


#1 2016-03-18 10:17:04

taka
Guest

チェックボックスでのスクリプトトリガについて

いつもお世話になっています。
FM13 Win7使用です。

レコード内容の修正が記録されるようにスクリプトを設定しています。
テーブル
RecordIDF(Get(UUID))
レコードロックF(テキスト)

変更履歴テーブル
RecordIDF(テキスト)
アカウント名F
タイムスタンプF
変更内容F

リレーション
テーブル::RecordIDF = 変更履歴テーブル::RecordIDF


レコードロック/修正スクリプト
IF[IsEmpty(テーブル::レコードロック)]
カスタムダイアログ
フィールド設定[テーブル::レコードロック=ロック]
変数を設定[$$修正フラグ;""]
Else IF[notIsEmpty(テーブル::レコードロック)]
カスタムダイアログ
変数を設定[$$RecID;テーブル::RecordID]
検索モードに切り替え
フィールド設定[テーブル::RecordID;$$RecID]
検索実行
フィールド設定[テーブル::レコードロック=""]
変数を設定[$$修正フラグ;"修正中"]
End IF

フィールドPre取得スクリプト
IF[テーブル::レコードロック=ロック]
フィールドへ移動
現在のスクリプト終了
End IF
IF[not IsEmpty($$修正フラグ)]
変数を設定[$$Pre;Get(アクティブフィールド内容)]
End IF

変更終了時スクリプト
IF[$$Pre=Get(アクティブフィールド内容)]
現在のスクリプト終了
Else
カスタムダイアログ
変数を設定[$$RecID;テーブル::RecordID]
変数を設定[$$TimeStamp;Get(タイムスタンプ)]
変数を設定[$$Post;【テーブル名::変更フィールド】$$Pre → Get(アクティブフィールド内容)]
レイアウト切り替え[変更履歴]
新規レコード
フィールド設定[変更履歴テーブル::RecordID;$$RecID]
フィールド設定[変更履歴テーブル::アカウント名;Get(アカウント名)]
フィールド設定[変更履歴テーブル::タイムスタンプ;$$TimeStamp]
フィールド設定[変更履歴テーブル::変更内容;$$Post]
レイアウト切り替え[元のレイアウト]
End IF

新規レコードを作製した時はスクリプトが作動しないようにflgを立ててありますので割愛しています。
①新規レコード作成
②レコードロック/修正スクリプト(レコードロックのほうだけが作動します)
③レコードロック/修正スクリプト(修正のほうが作動します)
④修正するフィールドに入る(OnObjectEnterでフィールドPre取得スクリプトが作動します)
⑤修正
⑥フィールドから移動する(OnObjectExitで変更終了時スクリプトが作動します。)
⑦レコードロック/修正スクリプト(レコードロックのほうだけが作動します)

というように変更内容を記録しています。

このときにフィールドが「編集ボックス」だと問題なく作動するのですが「チェックボックス(ラジオボタンは試していません)」だと作動しません。
チェックボックスでも作動させることは出来ますでしょうか?

宜しくお願いいたします。

#2 2016-03-18 10:43:22

チポ
Member

Re: チェックボックスでのスクリプトトリガについて

スクリプトは分っていませんが、、

チェックボックスのトリガは
OnObjectModify
でいいのでは。

ただし、チェック1回ごとにトリガされますね

Offline

#3 2016-03-18 12:19:29

taka
Guest

Re: チェックボックスでのスクリプトトリガについて

チポ様
ありがとうございます。

スクリプト長いですよね。。。
すいません。

単純に書くと
①レコードのロックを外す。
②フィールドに入ったときの値を取得する($$Pre)
③フィールドから出るときに現在のフィールド内容が$$Preと変化しているかを照合する
④変化していた場合、変更履歴テーブルに内容を保管する。
⑤レコードをロックする。
といったものです。これを3つのスクリプトで制御しています。

OnobjectModifyで試してみたのですがトリガされません。

宜しくお願いいたします。

#4 2016-03-18 13:26:40

チポ
Member

Re: チェックボックスでのスクリプトトリガについて

チェックボックスをチェックすると
OnObjectModify
でトリガされますよ

> ②フィールドに入ったときの値を取得する($$Pre)
チェックボックスをチェックしても、
フィールドはアクティブになりませんから、
その値を得るにはそれなりの方法が必要でしょう。

Offline

#5 2016-03-18 14:47:36

scripter
Guest

Re: チェックボックスでのスクリプトトリガについて

フィールド個別にやろうとすると、今問題の件とかドラッグ&ドロップの対応とか面倒なので、変更専用のテーブル(レコード?)を使って、コミット時に記録した方が楽かもしれない。

#6 2016-03-18 15:03:55

taka
Guest

Re: チェックボックスでのスクリプトトリガについて

チポ様
ありがとうございます。
もう一度試してみます。

フィールド設定みたいなイメージですかね?
チェックボックスの場合は別フィールドを作成してそこで評価するとかならできますか?

scripter様
テーブル(レコード)自体を複製するという解釈であっていますか?

#7 2016-03-18 17:58:20

チポ
Member

Re: チェックボックスでのスクリプトトリガについて

ああ、間違えた。

チェックボックス、ラジオボタン
共にクリックでフィールドが選択されます。

ドロップダウンと間違えてしまいました -_-

Offline

#8 2016-03-23 08:37:21

taka
Guest

Re: チェックボックスでのスクリプトトリガについて

チポ様
ありがとうございます。

フィールドが選択されるということはフィールドがアクティブになるということですか?
ということはOnObjectExitが使用できるということでしょうか?

#9 2016-03-23 13:15:12

チポ
Member

Re: チェックボックスでのスクリプトトリガについて

その通りですね。

Offline

#10 2016-03-24 11:25:31

taka
Guest

Re: チェックボックスでのスクリプトトリガについて

チポ様ありがとうございます。

聞き方が悪かったですね。
少し長くて見るのが面倒くさいかも知れませんが #1 のスクリプトはトリガされるはずということでいいのですか?

#11 2016-03-24 16:15:14

チポ
Member

Re: チェックボックスでのスクリプトトリガについて

トリガされるはずです。

警告音とか、カスタムダイアログを表示で
スクリプトが実行されているか確認できますよね。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 524.44 KiB (Peak: 544.98 KiB) ]