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

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

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

You are not logged in.

Announcement

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


#1 2015-08-17 14:03:24

sora
Guest

繰り返すスクリプトの簡素化

同じスクリプト内で下記スクリプトの一部の式を変えて、20個程作成することになりました。

変わるのは (スクリプト引数)=1
と A入力 の部分です。

20個作成しても良いのですが、簡素化出来ないかと思い問い合わせさせていただきます。


Else If[ Get(スクリプト引数)=1
  If[計画番号=""]
   Else
   If[A入力=0]
   Else
     カスタムダイアログを表示
    全スクリプト終了
  End If
End If
Else If[ Get(スクリプト引数)=2
  If[計画番号=""]
   Else
   If[B入力=0]
   Else
     カスタムダイアログを表示
    全スクリプト終了
  End If
End If
  ・
  ・
  ・

#2 2015-08-17 14:55:30

scripter
Guest

Re: 繰り返すスクリプトの簡素化

カスタムダイアログを表示
が同じなら、20個分のIf条件を1つにまとめれば、20個書かなくていいのでは。

If[計画番号=""]
は全部同じなので毎回書かず外に出す。

#3 2015-08-17 16:03:15

チポ
Member

Re: 繰り返すスクリプトの簡素化

Else If[ Get(スクリプト引数)=1
  If[計画番号=""]
   Else
   If[A入力=0]
   Else
     カスタムダイアログを表示
    全スクリプト終了

Ifステップの3回分は
   If [Get ( スクリプト引数 ) = 1 and not IsEmpty ( 計画番号 ) and A入力 ≠ 0]
この1行に出来ますね。


この判定を20回繰り返すということでしたら、
Loopを使って20回繰り返すようにすればいいでしょう。

計画番号の判定が常に同じ条件なら
scripterさんのお薦めの通り、外に出すことが出来ますね。


Get ( スクリプト引数 ) = 1
これが1、2、3・・・と規則的に変化するのなら変数に出来ます。
不規則な変化なら、始めに変数にリストにして入力し、1行ずつ取り出すことが出来ます。

A入力 = 0
この判定するフィールドが変わるのでしたら、
フィールド名を順にリストにして変数に入力し、
GetField
で1行ずつフィールド名を指定してその値を取り出すことが出来ます。

Offline

#4 2015-08-17 18:17:12

とおりすがり
Guest

Re: 繰り返すスクリプトの簡素化

If [ A入力 = 0 ]の部分も

Let (
[
%テーブル名 = "テーブル名" ;
%フィールド名 =
GetValue (
  List (
   "A 入力" ; // スクリプト引数が 1 の場合のフィールド名
   "B 入力" ; // スクリプト引数が 2 の場合のフィールド名
   "C 入力" ; // スクリプト引数が 3 の場合...
   "D 入力" ; // スクリプト引数が 4 の場合...
   ...
  ) ;
  Get ( スクリプト引数 )
)
] ;
GetField ( %テーブル名 & "::" & %フィールド名 ) = 0
)

って式でまとめられそうですね。

#5 2015-08-17 22:00:37

Shin
Member

Re: 繰り返すスクリプトの簡素化

If (
  計画番号 ≠ 0
   and
  Choose (
   Get(スクリプト引数) ;
   "" ;
   A入力 ≠ 0 ;
   B入力 ≠ 0 ;
   …
  )
)
カスタムダイアログを表示
全スクリプト終了
end If
で良いのでは。

Offline

#6 2015-08-19 15:16:34

sora
Guest

Re: 繰り返すスクリプトの簡素化

Shin wrote:

If (
  計画番号 ≠ 0
   and
  Choose (
   Get(スクリプト引数) ;
   "" ;
   A入力 ≠ 0 ;
   B入力 ≠ 0 ;
   …
  )
)
カスタムダイアログを表示
全スクリプト終了
end If
で良いのでは。


カスタムダイアログが表示しません。
宜しくお願い致します。

#7 2015-08-19 19:13:09

Shin
Member

Re: 繰り返すスクリプトの簡素化

検証ファイルでは動いていますが。

Offline

#8 2015-08-27 14:35:14

sora
Guest

Re: 繰り返すスクリプトの簡素化

Shin wrote:

If (
  計画番号 ≠ 0
   and
  Choose (
   Get(スクリプト引数) ;
   "" ;
   A入力 ≠ 0 ;
   B入力 ≠ 0 ;
   …
  )
)
カスタムダイアログを表示
全スクリプト終了
end If
で良いのでは。

Shin様
この通りにサンプルを作成すると上手く行きました。
実際に展開致します。
有難う御座いました。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 516.2 KiB (Peak: 520.73 KiB) ]