みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になります。
5回の繰り返しフィールドがありまして、そこにはテキストで計算式を入れています。
別の繰り返しフィールドに上記のテキストをEvaluate関数で計算したいのですが、スクリプトではなくLET関数を利用したいのですが。
例
繰り返しフィールドA 繰り返しフィールドB
1+1 → 2
1+2 → 3
1+3 → 4
1+4 → 5
1+5 → 6
LET関数がどうもなじめなくてわかりません。
よろしくお願いします。
Offline
Evaluate ( フィールドA )
だけでいいですよ。
Offline
Shinさん、早速の回答ありがとうございます。
確かに簡単な計算式では、問題ないのですが、繰り返しフィールドに入れる計算式に関連フィールドを含めた計算式を入れると
先頭行しか計算されず、後は”ゼロ”になってしまいます。
関連フィールドを含めた計算式で何か注意しないといけないのでしょうか?
例
繰り返しフィールドA 繰り返しフィールドB
TEST_A::b * 0.5 → 3
TEST_A::b * 0.5 → 0
TEST_A::b * 0.5 → 0
TEST_A::b * 0.5 → 0
TEST_A::b * 0.5 → 0
以上よろしくお願いします。
Offline
TEST_A::b が繰り返しフィールドでないのでしたら、
TEST_A::b[1] * 0.5
と書く必要があります。これは、繰り返しフィールドは、同じ繰り返し位置の内容を参照する特性によるものです。繰り返し1のフィールド(繰り返しでないフィールド)は、1の位置のみのフィールドとして取り扱われますので、他の繰り返しからそれを参照するには、繰り返し位置を指定する必要があります。
関連フィールドであっても、それは間径ありません。
Offline
Shinさん
詳しい説明ありがとうございます。
奥が深いですね。
マニュアルにも記載しいないてことなので勉強になりました。
今後とも宜しくお願いします。
Offline
Shinさん
アドバイス頂いた指定で計算することができました。
LET関数の勉強のため、下記の方法を試してみたのですが「?」が表示されてしまいます。
Dim_A_Calcu:計算式をテキストで設定した繰り返しフィールド
self : 下記の式を指定した計算フィールド
Let([
$x=0;
$fnc="
let([
$x=$x+1;
self[x]=Evaluate ( Dim_A_Calcu[x] )
]; Evaluate($fnc))
"
];
Evaluate($fnc)
)
以上よろしくお願いします。
Offline
繰り返しフィールドの繰り返しの内容の取得
Extend の内容も参照して見てください。
ざっと式だけを見て、無限loop になっています。最終は、システムがオーバーフローエラーを出して終了しているはずです。
また、x という変数がありません。$x は定義されていますが。
ちなみに、self は関数に定義されています。フィールド名として使用することはできません。
計算フィールドは、自フィールドに値を返すだけですので、別の繰り返し位置に対しては、値を設定できないのでは。変数の設定は可能です。
Let Evaluate を使った再帰は、FM17以前のレガシーな手法です。While() を使いましょう。
Last edited by Shin (2019-12-02 13:10:27)
Offline
Shinさん
返答ありがとうございます。
確かにじっくり見るとLoopになっていますね。
xは$xの間違いでした。
じっくり考えて、以下の計算式にて対応できました。
Let(
[
$n=7;
$x=0;
$res="";
$fnc=
"Case($x=$n; GetValue ( $res ; Get ( 計算式繰り返し位置番号 ) );
Let([
$x=$x+1;
#itm=Evaluate ( Dim_A_Calcu[$x] );
$res=List($res; #itm)
]; Evaluate($fnc))
)"
];
Evaluate($fnc)
)
While関数はまた確認しておきます。
ありがとうございました。
Offline
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 562.36 KiB (Peak: 581.36 KiB) ]