みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
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
> 「マスタ_手術」
に、
術式と、小項目の全ての組み合わせがあるのなら、
術式でリレーションして、
小項目は
List ( マスタ_手術::小項目 )
で入力されるでしょう。
Offline
③、④は、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
チポさん#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
みなさま、ご返信いただきありがとうございました。
早速やってみます。
Offline
Pages: 1
[ Generated in 0.006 seconds, 11 queries executed - Memory usage: 560.78 KiB (Peak: 566.03 KiB) ]