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

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

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

You are not logged in.

Announcement

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


#1 2017-12-18 14:39:34

おん
Member

スクリプトでチェックボックスに自動的にチェックを入れたい。

FM12、win7を使用しています。


ファイル「患者管理」
テーブル「手術」
    「マスタ_手術」    を作成。


テーブル「手術」に、フィールド「術式」、「小項目」を設定し、
「術式」  01 VPシャント術
      02 LPシャント術
      03 VAシャント術
      04 シャント再建
      05 第3脳室底開窓術       
「小項目」 01 開頭
      02 顕微鏡使用
      03 内視鏡使用
      04 血管内
      05 定位的手術
      06 穿頭術   

と値一覧(「マスタ_手術」の値を使用)を設定し、チェックボックスにしてあります。


①「術式」で01 VPシャント術を選択したら、「小項目」の06 穿頭術  にチェック。
②「術式」で03 VAシャント術を選択したら、「小項目」の06 穿頭術  にチェック。
③「術式」で05 第3脳室底開窓術を選択したら、「小項目」の03 内視鏡使用、06 穿頭術  にチェック。
④「術式」で01 VPシャント術と05 第3脳室底開窓術を選択したら、「小項目」の03 内視鏡使用、06 穿頭術にチェック。

といった様に、小項目に自動的にチェックを入れたいです。


「術式」で何を選択したか判断出来る様に、
「Couint_術式01」フィールドを作成。 計算式は、PatternCount ( 主病名_術式 ; "01" )   これを術式1~術式5までの分。
「小項目」で何を選択したか判断出来る様に、
「Couint_小項目01」フィールドを作成。 計算式は、PatternCount ( 主病名_小項目 ; "01" )   これを小項目1~小項目6までの分
を作成し、
「小項目」にトリガを設定し、「術式」選択後、「小項目」フィールドに入った時点で、チェックがつくように、

If ( 患者管理::Couint_術式01=  "1")
計算結果を挿入[選択;小項目;( 患者管理::Couint_小項目01  ≠ "1" ; GetAsText ( 患者管理::小項目 ) & ¶ & "06 穿頭術" ; "" )
現在のスクリプト終了
Else If ( 患者管理::Couint_術式05=  "1")
計算結果を挿入[選択;小項目;( 患者管理::Couint_小項目03  ≠ "1" ; GetAsText ( 患者管理::小項目 ) & ¶ & "03 内視鏡使用" ; "" )
計算結果を挿入[選択;小項目;( 患者管理::Couint_小項目06  ≠ "1" ; GetAsText ( 患者管理::小項目 ) & ¶ & "06 穿頭術" ; "" )
現在のスクリプト終了
Else If...


と作成しましたが、


①、②、③の様に「術式」でチェックしたものが1つならうまくいくのですが、
④の様に「術式」でチェックしたものが複数だと、「小項目」06 穿頭術のみしかチェックされず困っております。


どなたか、ご教示よろしくお願いします。

Offline

#2 2017-12-18 16:36:10

チポ
Member

Re: スクリプトでチェックボックスに自動的にチェックを入れたい。

> 「マスタ_手術」
に、
術式と、小項目の全ての組み合わせがあるのなら、

術式でリレーションして、
小項目は
  List ( マスタ_手術::小項目 )
で入力されるでしょう。

Offline

#3 2017-12-18 17:28:19

Shin
Member

Re: スクリプトでチェックボックスに自動的にチェックを入れたい。

③、④は、06が入力された時の動きと同じですので、特に何もせずにいけるかも。
チェックを外した時には、そのままでいいのですよ。

If ( PatterCount ( 術式::術式 ;  "01")
フィールド設定 ( 術式::小項目 ; List ( 術式::小項目 ; "06" ) )
end If
If ( PatterCount ( 術式::術式 ;  "03")
フィールド設定 ( 術式::小項目 ; List ( 術式::小項目 ; "06" ) )
end If
If ( PatterCount ( 術式::術式 ;  "05")
フィールド設定 ( 術式::小項目 ; List ( 術式::小項目 ; "03" ; "06" ) )
end If
フィールド設定 ( 術式::小項目 ; FilterValues ( List ( "01" ; "02" ; "03" ; "04" ; "05" ; "06" ) ; 術式::小項目 )

https://www.dropbox.com/s/a2sutx646xz25 … 7.zip?dl=0

Last edited by Shin (2017-12-20 14:05:51)

Offline

#4 2017-12-18 17:36:38

Hiro
Member

Re: スクリプトでチェックボックスに自動的にチェックを入れたい。

チポさん#2案が簡単ですが、
結果に小項目の重複が発生します。
それを避ける意味で、もう一手間かけ、
そのリレーションで動的値一覧を組んで、
その内容を、ValueListItems()
で代入するのが良いでしょう。


【サンプル補足】
スクリプトでなく、計算フィールドの式で動的に自動代入する作例をアップしました。
上記面倒な動的値一覧を使わず、計算式の方で重複排除しています。

計算式は、(Substitute処理は、無用な末尾「空行」削除のため)
   Substitute(
      FilterValues(ValueListItems(Get(ファイル名);"小項目値一覧"); List(対応表::小項目)) & "|||"
      ; ["¶|||"; ""]
      ; ["|||"; ""]
   )

●サンプル「動的チェック代入.fmp12」 → https://yahoo.jp/box/4IKi7v

Last edited by Hiro (2017-12-18 22:55:58)

Offline

#5 2017-12-19 13:05:25

おん
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.006 seconds, 11 queries executed - Memory usage: 560.78 KiB (Peak: 566.03 KiB) ]