みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
https://fm-aid.com/bbs2/viewtopic.php?id=7269
の質問に関連した質問をお願いします。
list関数で取得したフィールドの値を、
ポータルのidフィールドに値を入力していきたいのですが、下記の方法で実現できました。
変数の設定[$x; 値:list(テーブル::id)]
変数の設定[$count; 値:1]
ポータル内の行へ移動[選択:オン;最初の]
Loop
フィールド設定[ポータル::id;GetValue($x; $count)]
変数を設定[$count; 値: $count + 1]
ポータル内の行へ移動[選択:オン;次の;最後まできたら終了;オフ]
Exit Loop if [$count >= ValueCount($x)]
End Loop
これで動くのですが、何か違う気がします。スクリプトを治すとしたら、どこを直したほうが効率的でしょうか?
Offline
1点だけ
> Exit Loop if [$count >= ValueCount($x)]
これではListの最後の行を入力せずにLoopを抜けちゃいますよ。
$count > ValueCount($x)
後、強いてあげるのなら、
変数 $x を使わないでも、
GetValue ( List ( テーブル::id ) ; $count )
とできますが、
この処理中にテーブル::idの変更等があるとまずいかも。。
Loop
フィールド設定 [ ポータル::id ; GetValue ( $x; $count ) ]
Exit Loop if [ $count >= ValueCount ( $x ) ]
変数を設定 [ $count ; 値:$count + 1 ]
ポータル内の行へ移動 [ 選択:オン;次の;最後まできたら終了;オフ ]
End Loop
この順にするとLoopを抜けるとき、
Exit Loop If
以下の2行を飛ばせます・・だからどうしたっていわれそうですが ;;;
Offline
ご回答ありがとうございます。
$count > ValueCount($x)
⇒こちらは誤りでした。ご指摘ありがとうございます。
count変数で1ずつ加算してLoopを抜けるという方法で問題ないんですね。安心しました。
例えば、多言語のように、
int[] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 };
foreach (int i in numbers)
{}
のように、count変数を加算せずに処理できたりするのかなと思いました。
リスト内の値の数をカウントし、Loopで回して、条件が合致すればLoopを抜けるという
手法で問題なさそうなのがわかりました。勉強になります。ありがとうございます。
Offline
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 551.03 KiB (Peak: 582.5 KiB) ]