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

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

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

You are not logged in.

Announcement

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


#1 2021-07-03 21:51:11

si
Member

スクリプトステップの「 If 」について

macOS 10.13.6
FileMaker Pro 18 Advanced
FileMaker Server 18
お世話になります。

スクリプトステップの「If」について教えてください。

例えば、検索結果の対象レコード数で処理を分岐する場合
0件 ・・・カスタムダイアログでエラーを出してOKボタン(OKボタンのみ) → 全レコードを表示 → 現在のスクリプトを終了
1件以上・・・以降の処理を続行

If [ Get ( 対象レコード数 ) = 0 ]
カスタムダイアログを表示 [ "エラー" ; "該当レコードがありません。" ]
If [ Get ( 最終メッセージ選択 ) = 1 ]
  全レコードを表示
  現在のスクリプト終了
End If
End If

上記のように書いても問題ありませんか?

Else でレコードがあった場合の処理を書くべきでしょうか?

以降の処理でも If で分岐させる必要があると、入れ子になって見づらいので
上記のように書いていて、動いてはいますが、正しいのかどうか不安になってきました。

宜しくお願いいたします。

Offline

#2 2021-07-03 22:54:34

Moz
Member

Re: スクリプトステップの「 If 」について

あとから見直したときに自分(と後継者が)分かりやすいように書けば良いでしょう。
(簡潔で短く書けてもあとから何だか分からないなら意味がない)

現時点で入れ子になっていますよね?

また、2つめの If はカスタムダイアログに選択肢(2つ以上のボタン)があるのですか?
メッセージからは選択ができるように読めませんが(OKとキャンセル)があるとか......
ボタンがひとつしかないなら If で分岐する必要はないかと。

Offline

#3 2021-07-03 23:16:17

si
Member

Re: スクリプトステップの「 If 」について

Moz様 早速のアドバイスありがとうございます。

カスタムダイアログのボタンは「OK」の1つだけで「キャンセル」は作っていません。

ボタンが1つなら分岐しなくてもいいんですね。
ボタンを作ったら、必ず Get ( 最終メッセージ選択 ) = 1 で分岐させないといけないのだと思い込んでいて
ボタンの部分の入れ子は仕方ないのだと思っていました。

こちらで相談してよかったです。
とてもスッキリしました!
ありがとうございました!

Offline

#4 2021-07-04 08:55:48

Shin
Member

Re: スクリプトステップの「 If 」について

書き方の流儀の話ですので、好き嫌いがあると思いますが。
昔情報学基礎の講義で散々言われてたのが、フローチャートを書くときに、全ての処理は、最初のボックスから最後のボックスで完結させる、という流れです。つまり、途中でフローチャートの中止・終了を作ってはいけない、ということです。(構造化という理論の一部です)
実際に運用の流れをみていると、全てがこれにあてはまるとは言えないでしょうが、最近のC以降の関数呼び出し型のオブジェクト指向言語では、これを守らないと書けなかったり、スタックを浪費したり、誤動作になったりすることがあります。また、のちにメンテナンスで処理を追いかけるときに、読みにくくなります。FileMaker のスクリプトは、昔のCOBOLのような手続き側の言語に近いのですが、フローを考える上である程度守ったほうがいいと思います。特に、そのスクリプトがサブスクリプトとして呼び出される可能性があれば、より厳格に守ったほうがいいです。

ですから、できれば、

If ()
   エラー処理など
   処理終了
end
条件に合う処理

という書き方は避けて、

If ()
   条件に合う処理
else
  エラー処理など
end

という形にまとめるほうがいいかもしれません。(この書き方も流儀があって、エラー処理を最初に書いておく、という人と、先に本来の処理を書いていく、という人があります)

Last edited by Shin (2021-07-05 13:52:17)

Offline

#5 2021-07-04 17:24:53

si
Member

Re: スクリプトステップの「 If 」について

Shin様 ありがとうございます。

なるほど〜!詳しい解説を教えていただきましてありがとうございます。
サブスクリプトとして呼び出しているものの中にも「else」を略していましたので、直します!

構文を守るべき理由を教えていただいたので、これからはちゃんと書きます。
常に「条件に合う処理」を先に書く、と決めておくだけでも読みやすくなりそうですね。

動画なども見ながら基礎的なことも勉強していこうと思います。
ありがとうございました。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 10 queries executed - Memory usage: 557.65 KiB (Peak: 564.78 KiB) ]