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

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

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

You are not logged in.

Announcement

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


#1 2017-12-13 15:53:47

morotomi
Member

filemaker12 二次元配列の作成方法を教えて下さい。

filemaker12での二次元配列の作成方法を教えて下さい。
やりたいことは、患者IDと検査結果10個を入れる配列を作成したいです。

以下スクリプトです。

エラー処理[オン]

変数を設定[$コース; 値:検査結果検索::コース]

#
# 患者一覧から該当レコードの患者IDを取得
#
レイアウト切り替え[「患者一覧」(患者基本情報)]
全レコードを表示
検索モードに切り替え[]
フィールド設定[患者基本情報::コース; "==" & $コース]
検索実行[]
レコードのソート[記憶する]
変数を設定[$cnt; 値:0]
変数を設定[$cnt; 値:Get(対象レコード数)]
レコード/検索条件/ページ移動[最初の]

変数を設定[$i; 値:-1]
変数を設定[$j; 値:0]
LOOP
  変数を設定[$i; 値:$i+1]
    Exit Loop If[$i > $cnt]
    変数を設定[$$患者ID[$i][0]; 値:患者基本情報::患者ID]   #ここがわかりません
    LOOP
    変数を設定[$j; 値:$j+1]
        Exit Loop If[$j > 10]
        変数を設定[$$患者ID[$i][$j]; 値:""]                         #ここがわかりません
    End Loop
    レコード/検索条件/ページへ移動[次の]
End Loop

どなたか教えて下さい。
よろしくお願いいたします。

Offline

#2 2017-12-13 16:37:39

honda
Member

Re: filemaker12 二次元配列の作成方法を教えて下さい。

残念ながらFileMakerの変数は、一般的な言語のそれとまったく異なります。
多次元配列はできませんし、DictやMap様の任意のキーも扱えません。
ver.16であればJSON関連の関数である程度代用できますが、
ver.12となると、AdvacedならDictを扱えるカスタム関数が役立つかも知れません。
Proしかないのであれば、素直に一次元配列2つ以上の組み合わせと考えた方が早いです。

Offline

#3 2017-12-13 17:50:00

Shin
Member

Re: filemaker12 二次元配列の作成方法を教えて下さい。

バーチャルリストと絡めて表示させるしょうから、繰り返しの計算フィールド2個で代用するのが無難でしょう。
無理矢理1フィールドで済ませる事もできますが、のちにわかりにくくなるでしょう。

Offline

#4 2017-12-14 04:14:17

Hiro
Member

Re: filemaker12 二次元配列の作成方法を教えて下さい。

> 二次元配列の作成方法を教えて下さい。
・FMに「配列」の概念はありません。
・尚更、二次元は全くありません。
・類似するものに「繰り返し」はあります。
・しかし、一次元だけで二次元繰り返しはありません。
以上を前提に、

疑似的な二次元配列変数の実装方法を考えると、
・$$変数[j][k]は誤文法なので、$$変数[jk]で偽装する。
      ※ $$変数[2][4] → $$変数[24]
・変数の空枠取りはできません。何らかの値代入が必須です。
      ※ $$変数="" は$$変数の設定削解除を意味します。
これらを考慮したうえで、変数[1~j]x[1~k]計jxk個の変数を
式で設定する作例です。
式はWのループ式で、一次ループを5回、二次ループを5回とした例示です。

Let([
   $j=0;
   $fnc=
      "Case($j=5; $dmy;
         Let([
            $j=$j+1;
            $k=0;
            $dmy=Evaluate($sub)
         ]; Evaluate($fnc))
      )";
   $sub=
      "Case($k=5; $dmy;
         Let([
            $k=$k+1;
            $$var[$j&$k]=$j &\"-\"& $k
         ]; Evaluate($sub))
      )"
];
   Evaluate($fnc)
)

検証は、$$var[25] 式で "2-5" が返れば成功です。

Offline

#5 2017-12-14 11:02:04

Shin
Member

Re: filemaker12 二次元配列の作成方法を教えて下さい。

99✖️99の配列のようなものが欲しければ、単にグローバル変数などに$$para[9999] という風に記述させるようにすればいいだけかもしれませんよ。
それに対する配列計算が必要でしたら、それはライブラリーを作るといいでしょうね。

Offline

#6 2017-12-15 01:55:09

morotomi
Member

Re: filemaker12 二次元配列の作成方法を教えて下さい。

みなさんありがとうございます。
患者IDごとに検査結果10個をいれる二次元配列が必要ですので、
二次元配列にかわるもので代用できるのですね。
また、バーチャルリストを使用しても可能とのことですが、バーチャルリストの使用方法がわかりません。
ネットにはExecuteSQLの結果をバーチャルリストとして利用する方法などが載っていますが、テーブルにあるデータをどのように利用するのかがわかりません。
教えてください。
よろしくお願いいたします。

Offline

#7 2017-12-15 07:55:30

Shin
Member

Re: filemaker12 二次元配列の作成方法を教えて下さい。

単純な方法としては、IDと結果を改行で区切ったリストを作り、グローバル変数かグローバルフィールドに保存(これそのものがバーチャルリスト)、表示するには、繰り返しフィールドに展開したり、別個のフィールドへ収納したり、上手に作ると、項目感をタブに変更して、タブストップを使ったテキストフィールドに表示するだけでもいいでしょう。

Offline

#8 2017-12-15 11:25:44

Hiro
Member

Re: filemaker12 二次元配列の作成方法を教えて下さい。

結局何が遣りたいのか見えて来ません。
>#6 患者IDごとに検査結果10個をいれる二次元配列が必要ですので、
これに二次元配列なんで全く必要ありません。
FMに配列自体ありませんしその代替え措置も含め…。

単純に、
検査患者レコードに繰り返し[10]フィールドを作り、
これにその関連検査結果をLookup()するだけのことでは。

Last edited by Hiro (2017-12-15 17:43:22)

Offline

#9 2017-12-16 00:26:54

Shin
Member

Re: filemaker12 二次元配列の作成方法を教えて下さい。

2次元配列もどきを、テキスト上のタブを使って表現したサンプルです。他に別テーブルで一覧するスクリプトなど色々入っています。
https://www.dropbox.com/s/5wvyat8766kja … 7.zip?dl=0

Offline

#10 2017-12-22 01:29:58

morotomi
Member

Re: filemaker12 二次元配列の作成方法を教えて下さい。

みなさんご意見ありがとうございます。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.026 seconds, 10 queries executed - Memory usage: 528.55 KiB (Peak: 549.46 KiB) ]