みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になっています。
今回もよろしくお願いします。
Case (
IsEmpty ( 入院日 ) ; "" ;
退院日 = "" ; 終了日 - Max ( 入院日 ; 開始日 ) + 1 - _2 ;
移行先判定="転棟" and 退院日 > _3か月後; Min ( 終了日 ; 退院日 ) - Max ( 開始日 ; 入院日 ) +1-_2 ;
退院日 > _3か月後 ; Min ( 終了日 ; 退院日 ) - Max ( 開始日 ; 入院日 ) +1-_2 ;
再入院判定 = "再入院" or "転入" ; Min ( 終了日 ; 退院日 ) - Max ( 開始日 ; 入院日 ) +1-_2 ;
0
)
上記の式で計算をさせています。
移行先判定="転棟" and 退院日 > _3か月後; Min ( 終了日 ; 退院日 ) - Max ( 開始日 ; 入院日 ) +1-_2 ;
の所だと思うのですが、
移行先判定に転棟が入っている場合で
退院日が検索に使用しているグローバルフィールドの開始日と終了日の範囲の場合のみ
移行先判定="転棟" and 退院日 > _3か月後; Min ( 終了日 ; 退院日 ) - Max ( 開始日 ; 入院日 ) -_2 ;
と+1を抜きたいのですが、どの様に変更をすれば宜しいでしょうか?
+1のところをIf文にすればいいんではないでしょうか
(略) Max ( 開始日 ; 入院日 ) +if(G開始 <= 退院日 and G終了 >= 退院日; 1;0)-_2
if文を入れると、長くなって見にくくなるので、Let関数を使って
Let(
[
X=Max ( 入院日 ; 開始日 ) ;
N=Min ( 終了日 ; 退院日 ) ;
A=if(G開始 <= 退院日 and G終了 >= 退院日; 1;0)
];
Case (
IsEmpty ( 入院日 ) ; "" ;
退院日 = "" ; 終了日 - X + A - _2 ;
移行先判定="転棟" and 退院日 > _3か月後; N - X + A-_2 ;
退院日 > _3か月後 ; N - X + A-_2 ;
再入院判定 = "再入院" or "転入" ; N - X + A-_2 ;
0
)
)
のようにすればすっきりすると思います。
Offline
計算の前提がよくわかりませんね。
3条件目以降が、Min ( 終了日 ; 退院日 ) - Max ( 開始日 ; 入院日 ) +1-_2 で同じなんだけど、これで良いのかな。特に、3条件目と4条件目は同じ事をやってないのかな。
Min ( 終了日 ; Max ( 終了日 ; 退院日 ) ) にしておくと、退院日の未入力の条件は考え無くてよくなりますよ。
Offline
NoName様
やっぴ様
Shin様
お礼が遅れ大変申し訳ありません。
やっぴ様の案を軸に変更を行い、おかげさまでうまく動作している様です。
ありがとうございました。
Pages: 1
[ Generated in 0.006 seconds, 8 queries executed - Memory usage: 509.06 KiB (Peak: 513.6 KiB) ]