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

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

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

You are not logged in.

Announcement

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


#1 2018-09-26 17:20:31

kzs
Member

繰り返し計算フィールド等について

いつもお世話になっております。
違う質問で教えていただいものなのですが、その中の一つが自分が未熟により理解できなかった為解説していただきたいです。
本やFileMakerについてのホームページ等で調べたのですが理解できませんでした。

デーブル:パターン2
フィールド:ID、ID_Global、薬剤、薬剤_Global、予定日1、予定日2,予定日3、表示日Global
とあり、以下は ID_Global の中身です。

以下に入ってる情報を記載します。

薬剤を仮にA,B,Cあるとして
Aの薬剤を使うIDが、①(予定日1が2018/1/1、予定日2が2018/2/1、予定日3が2018/3/1)、
           ②(予定日1が2018/2/1、予定日2が2018/3/1、予定日3が2018/4/1)、
                             ③(予定日1が2018/3/1、予定日2が2018/4/1、予定日3が2018/5/1)
Bの薬剤を使うIDが、④(予定日1が2018/1/1、予定日2が2018/2/1、予定日3が2018/3/1)、
           ⑤(予定日1が2018/2/1、予定日2が2018/3/1、予定日3が2018/4/1)、
                             ⑥(予定日1が2018/3/1、予定日2が2018/4/1、予定日3が2018/5/1)
Cの薬剤を使うIDが、⑦(予定日1が2018/1/1、予定日2が2018/2/1、予定日3が2018/3/1)、
           ⑧(予定日1が2018/2/1、予定日2が2018/3/1、予定日3が2018/4/1)、
                             ⑨(予定日1が2018/3/1、予定日2が2018/4/1、予定日3が2018/5/1)

表示日_Globalに 2018/2/1 と入力するとレイアウト上
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
薬剤_Global  A    B    C
ID_Global   ①    ④     ⑦
                 ②    ⑤     ⑧
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
と表示されます。(薬剤_Global[3]、ID_Global[3])

以下に、ID_Global、薬剤_Globalの中身を記載します。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
ID_Global
ExecuteSQL(
"
  SELECT \"ID\"
  FROM \"パターン2\"
  WHERE \"薬剤\"=?
  AND (\"予定日1\"=? OR \"予定日2\"=? OR \"予定日3\"=?)
"
; ""
; "¶"
; 薬剤_Global
; 表示日_Global[1]
; 表示日_Global[1]
; 表示日_Global[1]
; 表示日_Global[1] )

薬剤_Global
Let([
#薬剤=
  ExecuteSQL(
   "SELECT DISTINCT(\"薬剤\") FROM \"パターン2\""
   ; ""
   ; "¶"
  )
];
GetValue(#薬剤; Get(計算式繰り返し位置番号)) & Left(表示日_Global[1];0))
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

長々と記載し申し訳ないですが、以上の条件で
1⃣レイアウト上、①の下に②、④の下に⑤、⑦の下に⑧と表示される理由。
2⃣また、②、⑤、⑧だけを表示させる方法

以上1⃣、2⃣についてご教示していただけないでしょうか?

皆さん忙しいと思いますが、未熟な私にご指導お願いいたします。

Offline

#2 2018-09-26 21:16:23

Hiro
Member

Re: 繰り返し計算フィールド等について

※過去ログid#8375『印刷レイアウト』の回答の続きですね!
Demo

++++++++++++++++++++++++++++++++++++

FM独自の繰り返し計算フィールドの特性仕様によります。

外部フィールドの値参照は、その値コマの繰り返し位置を明記する必要があります。
もし、非繰り返しフィールドの外部参照なら、「外部フィールド[1]」と固定位置を明記します。
もし、繰り返しフィールドで自己と同位置の外部参照なら
、「外部フィールド[Get(計算式繰り返し位置番号)] 」と動的位置を明記します。
ただ、この動的位置指定は面倒なので、「外部フィールド」と省略が可能で
、この省略形がデフォルトです。

繰り返し計算式でよくやるミスの原因はこのデフォルト仕様にあります。
非繰り返しフィールドの外部参照で「[1]」の明記を忘れると
、2コマ以降の値が取得できません。
つまり、無指定省略は自己と同じコマ位置を参照するため。

繰り返し計算式にSQL関数が使われているので視認性が悪いですが、要するに、
・ ; 薬剤_Global   →   薬剤_Global の自己と同じ繰り返し位置のコマ内容を参照
・ ; 表示日_Global[1]   →   表示日_Global の固定コマ位置 [1]番を参照

( 説明事例サンプル )
税率 [1回]: | 0.08 |
単価 [3回]: | 100 | 200 | 300 |
個数 [3回]: | 3 | 2 | 1 |
計算 [3回]: | 324 | 432 | 324 |   ←   正式: 単価 * 個数 * (1+税率[1])
・計算 [3回]: | 324 |      |      |   ←   ミス式: 単価 * 個数 * (1+税率)

繰り返しフィールドの計算式の特性については以上です。

++++++++++++++++++++++++++++++++++++

次に本題の2質問についてですが、
>#1『長々と記載し申し訳ないですが、以上の条件で』

> 1⃣『レイアウト上、①の下に②、④の下に⑤、⑦の下に⑧と表示される理由』
・SQL検索計算結果が複数の場合、改行区切「¶」の一覧で返すよう式を立ててあります。
      ; "¶"

> 2⃣『また、②、⑤、⑧だけを表示させる方法』
・質問の意味が分かりませんが、上記 1⃣のID一覧の2行目だけ切出すという意味なら、取得式は
      GetValue(ID_Global; 2)

Last edited by Hiro (2018-09-27 13:41:12)

Offline

#3 2018-09-28 08:57:16

Shin
Member

Re: 繰り返し計算フィールド等について

FielMaker の基本的な構造で作ったサンプルです。予定日は、別テーブルでフラットに管理するようにします。レイアウト上の見えは同じようにできます。この方が、色々と応用が効きますよ
https://www.dropbox.com/s/j8isg96ougxg0 … 7.zip?dl=0

Last edited by Shin (2018-09-28 16:32:37)

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 562.22 KiB (Peak: 586.08 KiB) ]