みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
素人です。わかりにくいタイトルおよびメッセージ記載ですがよろしくお願いします。
年に2回、患者さんの定期検査をしないといけません。
その2回を ①生年月日の月と ②生年月日の月+6 (※生年月日の半年後)にしたいと考えています。
※つまり、 1月生まれなら検査実施日は1月と7月)
定期検査の時期を期間順にリストで作成するときに
今日の日付(月)から ①生年月日の月 と ②生年月日から半年後 のどちらが最短の月なのかを判別する式がわかりません。
E X)生年月日の月が2月で 今日が8月の場合、 検査は、2月と10月になります。
※2つのフィールドのうち、今日の月が8月であることから、 次の検査日は10月にならないといけません。
同様に 生年月日の月が9月で 今日が10月の場合、 検査は、9月と3月になります。
※2つのフィールドのうち、今日の月が10月であることから、 次の検査日は3月にならないといけません。
こんなのはいかがでしょう?
非保存計算フィールド:日付形式
Let
(
[
$TDY = Month ( Get ( 日付 ) ) ;
$BTD = Month ( 生年月日 ) ;
$DST = Case ( $BTD - $TDY ≥ 6 ; -6 ; $TDY > $BTD ; 6 ; 0 )
]
;
Date ( Month ( 生年月日 ) + $DST ; 1 ; Year ( Get ( 日付 ) ) )
)この場合、生年月日から半年後のフィールドは不要になります。
Last edited by ブランコ (2021-08-24 06:37:30)
Offline
ブランコ様
早々のご助言ありがとうございます。
ちなみに初心者過ぎて
$TDY =
$BTD =
$DST =
この3つの意味はまったくわかりませんでしたが・・・
さっそく式を張り付けるとこちらが求める値が表示されました。
本当にありがとうございます。
すみません。誕生日の半年後以降を考慮してませんでした。
Let
(
[
$TDY = Month ( Get ( 日付 ) ) ;
$BTD = Month ( 生年月日 ) ;
$DST = Case ( $BTD - $TDY ≥ 6 ; -6 ; $TDY - $BTD > 6 ; 12 ; $TDY > $BTD ; 6 ; 0 )
]
;
Date ( Month ( 生年月日 ) + $DST ; 1 ; Year ( Get ( 日付 ) ) )
)こちらでどうでしょう。
Offline
ブランコ様
間違っていることにも気づきませんでしたが新しくいただきました方で、
問題なく使用できています。
本当にありがとうございました。
Let
(
m = Mod ( Month ( 誕生日 ) - Month ( Get ( 日付 ) ) + 11 ; 6 ) + 1 ;
Date ( Month ( Get ( 日付 ) ) + m ; 1 ; Year ( Get ( 日付 ) ) )
)
とか、
Let
(
m = Div ( Year ( Get ( 日付 ) ) * 12 + Month ( Get ( 日付 ) ) - Year ( 誕生日 ) * 12 - Month ( 誕生日 ) ; 6 ) ;
date ( Month ( 誕生日 ) + m * 6 + 6 ; 1 ; Year ( 誕生日 ) )
)
でもいいですよ。
Last edited by Shin (2021-08-24 17:21:59)
Offline
使用したのはlet関数と云いまして、これを使用すると計算式の前に変数を宣言することが出来るんです。
式内で繰り返し使われる値や、計算結果等を変数に代入してやることで記述をシンプルにすることを目的として使用しています。
$TDY←ここに今月(今なら8月)
を代入しています。$マークは不要ですが、私はなんとなく入れています。
私の場合、能力不足のためcase関数で場合分けをしていますが、shinさんのように普遍的な式に落とし込む方がよりエレガントだと思います。(個人的感想)
あと、出来れば式のベタ移植ではなく、どういう意図で式が書かれているかを理解しながら使用すると、ご自身の力になるのでオススメですよ。
Offline
let() 内だけで使うローカル変数は、$ にしないようがいいですよ。
$ をつけると、スクリプト内のローカル変数になるので、意図せずに別の let() へ影響したり、スクリプト内のステップで設定した変数を書き換える可能性が出てきます。(意図的に使うこともあります)
記号をつけたいのでしたら、$, $$ 以外の、# とか _ などがいいかもしれません。
Offline
ですよね。
最初に習った人(プロではないです)に、そう教わったため、なんとなく惰性で付けていました。
これからは#等を付けるようにします。
Offline
返信が遅くなってしまい、大変申し訳ありません。
皆様、いろいろな方法およびご説明ありがとうございました。
これからも精進していきますが、また解決できないことがありましたら、
よろしくお願いいたします。
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 566.5 KiB (Peak: 582.28 KiB) ]