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

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

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

You are not logged in.

Announcement

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


#1 2016-04-09 11:03:27

イシダ
Guest

Loop

FMpro12


Loop使ったスクリプトで悩んでいます。
繰り返しフィールドがあり空白かどうかをチェックしていき、繰り返し6フィールド分
空白であれば次のスクリプトに移行したいのですがうまくいきません。

10分刻みの時間軸[42]の繰り返しフィールドに
OnObjectEnter[Get(アクティブ繰り返し位置番号)]

変数を設定[$アクティブ繰り返し位置番号;値:GetValue(Get(スクリプト引数);1)]
変数を設定[$Loop終了値;値:$アクティブ繰り返し位置番号+6]
Loop
  変数を設定[$アクティブ繰り返し位置番号;値:$アクティブ繰り返し位置番号+1]
IF[not IsEmpty(10分刻みの時間軸[$アクティブ繰り返し位置番号])
  カスタムダイアログを表示(”繰り返しに文字がはいっています”)
  IF(Get(最終メッセージ選択)=1)
  現在のスクリプト終了【】
   End If
  Exit Loop IF($アクティブ繰り返し位置番号=$Loop終了値)
End Loop

というスクリプトを組んではみたのですがうまくいきません。
Loopを初めて使うのでいろいろとおかしいとは思いますがご指導して頂けないでしょうか?

#2 2016-04-09 11:26:40

ぽんかん
Guest

Re: Loop

どうなるんですか?

フィールド名が数字で始まってるのが変では。

#3 2016-04-09 11:40:20

イシダ
Guest

Re: Loop

ぽんかん wrote:

どうなるんですか?

空白でも空白でなくても
メッセージ(”繰り返しに文字がはいっています”)がでて
スクリプトが終了してしまいます。

ぽんかん wrote:

フィールド名が数字で始まってるのが変では。

確かに!!
フィールド名は説明用に変えさせて頂きました。

追記
変数を設定[$アクティブ繰り返し位置番号;値:GetValue(Get(スクリプト引数);1)]
変数を設定[$Loop終了値;値:$アクティブ繰り返し位置番号+6]
Loop
  変数を設定[$アクティブ繰り返し位置番号;値:$アクティブ繰り返し位置番号+1]
IF[not IsEmpty(10分刻みの時間軸[$アクティブ繰り返し位置番号])
  カスタムダイアログを表示(”繰り返しに文字がはいっています”)
  IF(Get(最終メッセージ選択)=1)
  現在のスクリプト終了【】
   End If
  Exit Loop IF($アクティブ繰り返し位置番号=$Loop終了値Exit Loop IF($アクティブ繰り返し位置番号=$Loop終了値)
End IF ←抜けていました
End Loop

#4 2016-04-09 22:58:59

Shin
Member

Re: Loop

同じ様なスクリプトで検証してみましたが、意図通りに動きますね。
繰り返しフィールドの設定が間違っているのでは。

loop で回すより、
IsEmpty(10分刻みの時間軸[$アクティブ繰り返し位置番号])and IsEmpty(10分刻みの時間軸[$アクティブ繰り返し位置番号+1])and ...
とした方が簡単では。

Offline

#5 2016-04-10 08:14:23

イシダ
Guest

Re: Loop

Shin wrote:

同じ様なスクリプトで検証してみましたが、意図通りに動きますね。
繰り返しフィールドの設定が間違っているのでは。

loop で回すより、
IsEmpty(10分刻みの時間軸[$アクティブ繰り返し位置番号])and IsEmpty(10分刻みの時間軸[$アクティブ繰り返し位置番号+1])and ...
とした方が簡単では。

Shin様
検証までして頂いてありがとうございました。
実際は
変数を設定[$Loop終了値;値:$アクティブ繰り返し位置番号+任意の数字(2~6までの数字)]
となるため、かならず6というわけではないのです。
いろいろ省略して逆に煩わせて申し訳ありません

スクリプトが不安だったのでお聞きしましたが、スクリプトは問題ないとのことですので
他のところでおかしいところを調べてみます。

ありがとうございました。

#6 2016-04-10 09:52:19

イシダ
Guest

Re: Loop

私も新規で検証したのですがうまくいきません。

Shin様へ
繰り返しフィールドの設定がまちがっているというのは
どのような事が考えられるのでしょうか?

#7 2016-04-11 09:27:31

alias
Guest

Re: Loop

not IsEmptyで見ているアクティブ繰り返し位置番号と
引数で持ってきたアクティブ繰り返し位置番号がちがうのでは?

#8 2016-04-11 10:23:26

scripter
Guest

Re: Loop

繰り返し数が6固定でなくても、Loopより単純にCase()を使って計算式を並べた方が簡単なのは確かでしょう。

#9 2016-04-11 16:09:48

チポ
Member

Re: Loop

何がうまくいかないのか・・


気になる点を、、
> GetValue(Get(スクリプト引数);1)
このスクリプトパラメータの設定は?

それに付随しますが、
>   変数を設定[$アクティブ繰り返し位置番号;値:$アクティブ繰り返し位置番号+1]
これは、
変数の初期値の次の繰り返し位置から始めていますよね。


回数が固定ではないのでは、スクリプトが手っ取り早いですよね。

Offline

#10 2016-04-12 09:00:31

イシダ
Guest

Re: Loop

ご回答有難うございました。

End Ifの位置を間違えていたみたいです。
下記の位置に変更したら動きました。

変数を設定[$アクティブ繰り返し位置番号;値:GetValue(Get(スクリプト引数);1)]
変数を設定[$Loop終了値;値:$アクティブ繰り返し位置番号+6]
Loop
  変数を設定[$アクティブ繰り返し位置番号;値:$アクティブ繰り返し位置番号+1]
IF[not IsEmpty(10分刻みの時間軸[$アクティブ繰り返し位置番号])
  カスタムダイアログを表示(”繰り返しに文字がはいっています”)
  IF(Get(最終メッセージ選択)=1)
  現在のスクリプト終了【】
   End If
End If
  Exit Loop IF($アクティブ繰り返し位置番号=$Loop終了値Exit Loop IF($アクティブ繰り返し位置番号=$Loop終了値)
End Loop

チポ wrote:

それに付随しますが、
変数を設定[$アクティブ繰り返し位置番号;値:$アクティブ繰り返し位置番号+1]
これは、
変数の初期値の次の繰り返し位置から始めていますよね。

ちなみにこれも思っていたのですが初期位置からはじめるにはどの様な方法があるのでしょうか?

#11 2016-04-12 09:35:17

チポ
Member

Re: Loop

簡単なのは
> 変数を設定[$アクティブ繰り返し位置番号;値:GetValue(Get(スクリプト引数);1)]
ここで、
-1
すればいいですね。


もう一つは
一連の処理の後に
変数を+1すればいいでしょう。

例では
  Exit Loop Ifステップ
の次に持ってくればいいですね。

> $Loop終了値
この設定も考えてください。

Offline

#12 2016-04-12 16:11:07

イシダ
Guest

Re: Loop

皆様お世話になっております。

検証では出来たのですが本ファイルでやるとやはりうまくいきません。
同じようにLoopを使って空白にフィールド内容を書き込むスクリプトは正常に起動しているのでアクティブ位置番号や引数取得は
有っていると思います。
空白の検出がうまくいかないのかどうか?

Loopは一旦諦めました。

scripter wrote:

繰り返し数が6固定でなくても、Loopより単純にCase()を使って計算式を並べた方が簡単なのは確かでしょう。

Case()行う方法を教えて頂けませんか?
アクティブ位置番号の開始からに2~6を足した数字の空白を調べたいのですがCase()を使用する方法はどのように書いていいかおもいつきません。
宜しくお願いします。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 11 queries executed - Memory usage: 541.8 KiB (Peak: 562.34 KiB) ]