みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
FM10 Win7
デイケアDBで日々利用者入力をしています。
(現在メインのテーブル)
m_患者
出席管理_入力用
出席管理明細
利用日一覧表
(出席管理明細からカルテNo.と日付をインポート。m_患者のカルテNo.同士をリレーションし利用日一覧表Tの日付をポータルしています。)
(例)
2019.4月 利用日一覧表
起算日 3年超 カルテNo. 氏名 のべ 減算 利用日
2016.3.3 2019.3.4 445 山田 太郎 7 - 2 = 5 1月 2火 3水 4木 5金 8月 9火 …
(起算日から3年を超えた日からが条件)
週(日~土)の利用日4回目から1カウント。(週に5回利用すると2カウント)
翌週になるとまた0カウントから計算し月末の合計を「減算」の欄に表示させたい。(例でいう2)
月をまたいでもリセットはなし、あくまでも週で計算。(なので、前月の最終週の利用日も計算対象)
先月最終週の利用日も計算対象なので前月と当月をインポートしないといけないのでしょうか?
かつ該当日を赤くする事です。
色々複雑ですが、ご享受よろしくお願い致します。
>#1『先月最終週の利用日も計算対象なので前月と当月をインポートしないといけないのでしょうか?』
直接回答でありませんが、お考え下さいネ。
集計の基本は、基礎データのあるテーブル側で必要な集計処理をしておいて、
その結果値を意図するレイアウトテーブルで展開表示する様にするのが、
ポイントです。 求める集計が複雑になれば成る程、この点が効いてきます。
Offline
週ごとのカウントは最大3、という計算の方が簡単です。マイナスカウントが必要でしたら、全カウントから引けば求められます。
こんな形ではいかがでしょう。(ちょっと特殊な集計をしていますが)
https://www.dropbox.com/s/jxqwiuezzprmu … 7.zip?dl=0
3年後などは考慮していませんが、ポータルフィルターに組み込めば簡単でしょう。
Last edited by Shin (2019-05-07 17:28:20)
Offline
Hiroさん
アドバイスありがとうございます。まだまだ基礎ができていなくてすみません。
これからも参考書等にて勉強していきます。質問したい点があるのですが、
本題からそれてくるので又の機会に別トピックで質問したいと思います。
よろしくお願い致します。
Shinさん
減算が算出できて、とても助かります。
この計算方法で該当日を赤くする(条件付き書式?)事は可能でしょうか?
集計は、非常に特殊なことをしていますので、よく理解してくださいね。
条件付き書式を設定したサンプルです。リレーションも大きく見直しています。
https://www.dropbox.com/s/jxqwiuezzprmu … 7.zip?dl=0
Last edited by Shin (2019-05-09 12:03:11)
Offline
Shinさん、ありがとうございます。
まずは、分解して理解に努めようと思います。
どうしても解決できなくて困っていました。
ほんとうに助かりました、ありがとうございます。
どうしてもできなくて再度の投稿お許し下さい。
Shinさんからお教えしてもらったのですが、週から月ごとの表示に変更するため、
新たに患者マスターにフィールド
期間集計_月初(日付タイプ)
期間集計_月末(日付タイプ)
を追加。
ポータルフィルタに
m_患者 2::期間集計_月初 ≤ 出席管理明細::d_日付 and 出席管理明細::d_日付 ≤ m_患者 2::期間集計_月末
を設定し、のべと利用日の月表示はできたのですが、減算と減算後の計算がうまくいきません。
どうかアドバイスお願いします。
前のリレーション条件を少し変えればいいです。
集計は、ごく普通の計算です。
https://www.dropbox.com/s/mgz5aoco1hcba … 2.zip?dl=0
ところで、減算という数字と、減算後のカウント日の数字のどちらが重要なのですか。
Last edited by Shin (2019-06-02 14:44:01)
Offline
Shinさん ありがとうございます。ものすごく助かります。
まだ、分解していないのでじっくり理解に努めます。
>ところで、減算という数字と、減算後のカウント日の数字のどちらが重要なのですか。
どちらかと言われると、減算の方が重要ですが、どちらも重要になりますので両方表示する事が大事になります。
Shinさん
ポータルの中に減算を入れたらきちんと表示するようになりました。ありがとうございます。
もうひとつお聞きしたいのですが、当月を入力し終わったら正しい数字が表示されるのですが、次月を入力し
前月を表示させると次月入力分も反映された数字になるのですが、どこを触ればいいのでしょうか?
Shinさん
試行錯誤の結果なんとかできました。
これからじっくり分解分析していきたいと思います。
ありがとうございました。
ポータルを使った集計ですので、でーたを再取得させないとダメですよ。簡単なのは、ウィンドウの再表示で、キャッシュも保存してしまうことです。
Offline
>でーたを再取得させないとダメですよ。簡単なのは、ウィンドウの再表示で、キャッシュも保存してしまうこと
Shinさん
返信ありがとうございます。
最近、また本を購入して初歩から勉強しています。
本当に、ありがとうございます。
Shinさん
横のポータルを作成している為におきる自分のミスなのですが、
月が明けてから前月の修正(追加日)が入るため、横ポータルだとソートされません。(最初の行1 行数1 最初の行2 行数1 … の為)
なのでShinさんの作成してもらったものからlist関数を参照配置し日付ソートは解決しました。
利用日_日
Let
(
DW = Day ( d_日付 ) & Choose ( DayOfWeek ( d_日付 ) - 1 ; "日" ; "月" ; "火" ; "水" ; "木" ; "金" ; "土" ) ;
Case (
Count ( 赤字用_出席管理明細to::d_日付 ) > 3 ; TextColor ( DW ; RGB ( 255 ; 0 ; 0 ) ) ;
DW )
)
List
Substitute ( List ( 赤字用2::利用日_日 ) ; ¶ ; " " )
これに 日付は11pt、曜日は8p
を追加できるのでしょうか?
どうかご教授よろしくお願いします。
https://www.dropbox.com/s/rtspayx01rh67 … fmp12?dl=0
流れは全く把握しておりませんが、利用日_日の文字サイズ変更だけに反応...
利用日_日の修正案
Let (
[
#dow=Choose(DayOfWeek(d_日付); ""; "日"; "月"; "火"; "水"; "木"; "金"; "土");
#DW=TextSize(Day(d_日付); 11) & TextSize(#dow; 8)
];
Case(
Count(赤字用_出席管理明細to::d_日付)>3
; TextColor(#DW; RGB(255;0;0))
; #DW
)
)
Offline
Hiroさん ありがとうございます。
完璧です。
すみませんが、もう一つ忘れていました。
チェックマークがありチェックが入ると
赤字用2_出席管理明細to::t_ナイトからデイへ変更 = "デイへ変更"
listの該当日の背景に色がつくというのは可能でしょうか?
ご教授お願い致します。
list は単なるテキストですので、その部分のバックにグラウンドの塗り潰しは非常に面倒です。
イタリックとか太字、下線などでしたら、
TextStyleAdd() 関数
を使って、同様に設定できます。
Offline
Shin さん
やはり、難しいですか...
視認性の問題で、バックの塗りつぶしがいいのですが、
すみません、ちなみにどのように TextStyleAdd() を
list関数に配置するのでしょうか?
カラーと同じです。
どうしてもバックの塗り潰しがいいのでしたら、各要素を繰り返しフィールドに保存し、色をつける、という方法でしたら比較的簡単でしょう。
Offline
TextStyleAdd("強調テキスト"; 強調表示) で「強調テキスト」みたいに強調表示するのが、出来る事の中で一番意向に近いかな?
Last edited by Hiro (2019-06-24 16:38:32)
Offline
強調を忘れていました。それが楽でしょう。
Offline
Hiroさん Shinさん ありがとうございます。
再度、質問なのですが
Let (
[
#dow=Choose(DayOfWeek(d_日付); ""; "日"; "月"; "火"; "水"; "木"; "金"; "土");
#DW=TextSize(Day(d_日付); 11) & TextSize(#dow; 7)
];
Case(
t_ナイトからデイへ変更 = "デイへ変更" ; TextStyleAdd(#DW ; 強調表示) ; ←ここ
Count(赤字用_出席管理明細to::d_日付) > 3 ; TextColor(#DW ; RGB(255;0;0)) ;
#DW
)
)
t_ナイトからデイへ変更 = "デイへ変更" ; TextStyleAdd(#DW ; 強調表示) ; で強調表示はできたのですが、赤文字が黒くなったので『←ここ』の
部分に TextColor(#DW ; RGB(255;0;0)) を追記したいのですがどうすればいいのでしょうか?
すみません。追記です。
Count(赤字用_出席管理明細to::d_日付) > 3 ; TextColor(#DW ; RGB(255;0;0)) ;
の部分に m_患者 2::c_起算日から3年超 < Get ( 日付 ) の条件がつけばを追加したいのですが、
どのようにしたらいいのでしょうか? 条件付き書式だとできるのですが、Case関数になるとどうも...
ご教授よろしくお願いします。
新旧2条件の組合せの説明が必要ですが、
とりあえず、それぞれ個別並列とすれば、
こんな式?
Let (
[
#dow=Choose(DayOfWeek(d_日付); ""; "日"; "月"; "火"; "水"; "木"; "金"; "土");
#DW=TextSize(Day(d_日付); 11) & TextSize(#dow; 7);
#DW=Case(t_ナイトからデイへ変更 = "デイへ変更"; TextStyleAdd(#DW;強調表示); #DW);
#DW=Case((Count(赤字用_出席管理明細to::d_日付)>3) and (m_患者 2::c_起算日から3年超<Get(日付)); TextColor(#DW;RGB(255;0;0)); #DW)
];
#DW
)
Offline
え?
てっきりCase関数の中に組み込むものだと思っていました。
まず、持ち帰って色々試してみたいと思います。
Hiroさん ありがとうございます。
検証後、報告致します。
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 578.37 KiB (Peak: 615.27 KiB) ]