繰り返しフィールドを処理するカスタム関数への定義注意

今回、MidRepText を作る時に気づいて、前からはまっていた事が解決したのでメモを。(正しいと言っていいのかはわからんけど)
カスタム関数の挙動というよりは、繰り返しフィールド特有の再計算のフラグの話だと思う。

誤 MidRepText ( 繰り返しフィールド ; 開始 ; 終了 ; 区切り)

正 MidRepText ( Extend(繰り返しフィールド) ; 開始 ; 終了 ; 区切り)

なんならこうである。

コメント 2020-04-30 183914

誤の方の場合、繰り返しフィールドの2や3(一番最初以外)を変更しても
再計算されない。
かねてより、カスタム関数内で使う関数の問題だと思い、非保存にする等で対応していたが、単純に再計算のフラグがたってなかったのだと気づいた。

ふと、一番目をさわって気づいた。

そこで、Extendを入れる事にした。listで主張したりもした。

Extendのファイルメーカーのマニュアルはこちら

Extend
非繰り返しフィールドの値を繰り返しフィールドのすべての繰り返しに使用できるようにします。

構文 
Extend (非繰り返しフィールド)
引数 
非繰り返しフィールド - 繰り返しフィールド以外のフィールド (1 つの値のみ入力できるフィールド)、または非繰り返しフィールドへの参照を返す式

そもそも非繰り返しフィールドを入れて使う関数だが
今回は、「これは繰り返しフィールドなのよお」と主張するために使った事になる。

MidRepText ( 繰り返しフィールド ; 開始 ; 終了 ; 区切り)
は、計算式を見張ってる再計算のフラグにおいて繰り返しフィールド[1] という事なんだと思う。



この記事が気に入ったらサポートをしてみませんか?