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

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

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

You are not logged in.

Announcement

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


#1 2017-12-04 15:34:56

サンサン
Member

loop処理でポータルに値を入力していく処理

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

#2 2017-12-04 16:55:03

チポ
Member

Re: loop処理でポータルに値を入力していく処理

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

#3 2017-12-04 18:36:20

サンサン
Member

Re: loop処理でポータルに値を入力していく処理

ご回答ありがとうございます。

$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

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 554.57 KiB (Peak: 586.41 KiB) ]