以下、 以前に書いた記事の補足になります。
目次
GetFieldValues関数について
上記の記事の中で、GetFieldValues関数 というカスタム関数を拝借しておりました。
大変お世話になったカスタム関数なのですが、再帰回数5万回という制限があるとのご指摘も頂いておりました。
また現在では、 上記カスタム関数が掲載されていたサイトが無くなっていて、残念ながらオリジナルの情報にたどりつくことができないようです。
While関数
解決策としては、FileMaker 18 以降から使えるようになった While関数 と SetRecursion関数 を組み合わせて代替する計算式を書いてしまうのが良さそうです。While関数単体だと5万回の再帰回数制限があるそうなのですが、それを SetRecursion関数 で解除できるのだとか。
とりあえず今回は、再帰回数制限のことは脇に置いておきます。<おい!
まずは GetFieldValues関数で実現していたことを While関数で作り直してみます。
下図は以前の記事でも掲載していた画像です。この画像中のスクリプトで GetFieldValues関数で記述していたことを While関数で作り直します。
While関数で書き直した内容が、以下です。
取り出したいフィールドは、[患者_idorrk::__fk_患者番号]というフィールドです。
Let ([#field = 患者_idorrk::__fk_患者番号 //ターゲットにするフィールド];GetNthRecord ( #field ; 1 ) & //最初のレコードだけ先に取り出しておくWhile (//条件を揃える[#max = Get ( 対象レコード数 );#i = 1;#result = ""] ;#i < #max ; //終了条件//繰り返し部分[#i = #i + 1;#result = #result & ¶ & GetNthRecord ( #field ; #i )];#result)//while)//let
本当は、JSONでも使ってよりスマートに仕上げるべきところなのですが、とりあえず今回は、以前からのスクリプトを踏襲する形で修正いたしました。JSONは、もう少し勉強いたします(笑)。
参考
以下、While関数の解説など、参考にさせていただいた記事です。
ありがとうございます。