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

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

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

You are not logged in.

Announcement

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


#1 2018-08-20 16:50:12

x2424
Member

FM16Win Else Ifの入れ子の書き方、もしくはcese文での代替方法をご教授ください

ファイルメーカー16Win Else Ifの入れ子の書き方、もしくはcese文での代替方法をご教授ください

チェックボックセット(ユーザーのデータが削除/有効の判定) の入力の際に
チェックボックスをクリックすると確認メッセージを表示したいと思っています。

チェックボックスにチェックが入っていれば、有効に戻してもよいかの確認ダイアログ
チェックボックスにチェックが入っていなければ、削除してもよいかの確認ダイアログ
フィールドのスクリプトトリガで「OnObjectSave」でスクリプトを指定しています。

--------------------------------------------------------

If [GetField ( カード::削除区分 = 1 )]
     カスタムダイアログを表示 ["確認メッセージ";
     "この行のデータを削除済みから「有効」に戻してもok?"

        If [Get (最終メッセージ選択) = 1]
        Else
            レコード/検索条件復帰 [ダイアログあり:オフ]

Else If [GetField ( カード::削除区分 = 0 )]
     カスタムダイアログを表示 ["確認メッセージ";
     "この行のデータを「削除済」にしてもok?"

        If [Get (最終メッセージ選択) = 1]
        Else
            レコード/検索条件復帰 [ダイアログあり:オフ]

End If

--------------------------------------------------------

現在のところ「スクリプトステップが無効です」と怒られてしまいます。
どこが書き足りないのかが、初心者のため分かりません。
ぱっと見た目おかしくないように見えてしまいます。

今回は条件が二つなのでIfElseでもいけるかと思っていますが、
今後のために、case文での書き方も知りたいです。

ちなみにFM16Proのスクリプトステップのところでcase文は書けるのでしょうか?
スクリプトの候補にcaseが見当たりません…;;

Offline

#2 2018-08-20 17:09:46

Shin
Member

Re: FM16Win Else Ifの入れ子の書き方、もしくはcese文での代替方法をご教授ください

IF に対しての End If が足りませんよ。
If [GetField ( カード::削除区分 = 1 )]
     カスタムダイアログを表示 ["確認メッセージ"; "この行のデータを削除済みから「有効」に戻してもok?"
        If [Get (最終メッセージ選択) = 1]
        Else
            レコード/検索条件復帰 [ダイアログあり:オフ]
        End If
Else If [GetField ( カード::削除区分 = 0 )]
     カスタムダイアログを表示 ["確認メッセージ";  "この行のデータを「削除済」にしてもok?"
        If [Get (最終メッセージ選択) = 1]
        Else
            レコード/検索条件復帰 [ダイアログあり:オフ]
        End If
End If
とするべきでしょう。
カスタムダイアログの内容以外は同じですので、そのメッセージを、削除区分で切り替えるともっと簡潔になります。
また、
        If [Get (最終メッセージ選択) = 2]
            レコード/検索条件復帰 [ダイアログあり:オフ]
        End If
とした方がスッキリします。

Offline

#3 2018-08-20 17:49:09

x2424
Member

Re: FM16Win Else Ifの入れ子の書き方、もしくはcese文での代替方法をご教授ください

おおっ ありがとうございます。m(__)m
半日煮詰まっていたので助かりました。

さらに改善方法まで、確かにご提案の方が良さそうですね。

If [GetField ( カード::削除区分 = 1 )]
     カスタムダイアログを表示 ["確認メッセージ"; "この行のデータを削除済みから「有効」に戻してもok?"
        If [Get (最終メッセージ選択) = 2]
            レコード/検索条件復帰 [ダイアログあり:オフ]

        End If

Else If [GetField ( カード::削除区分 = 0 )]
     カスタムダイアログを表示 ["確認メッセージ";  "この行のデータを「削除済」にしてもok?"
        If [Get (最終メッセージ選択) = 2]
            レコード/検索条件復帰 [ダイアログあり:オフ]

        End If
End If

こんなかんじでしょうか。^^

Offline

#4 2018-08-20 18:12:57

Shin
Member

Re: FM16Win Else Ifの入れ子の書き方、もしくはcese文での代替方法をご教授ください

とりあえず、それで意図した動きになればいいでしょう。

高度な作り方ですと、
カスタムダイアログを表示 ["確認メッセージ";  Choose ( カード::削除区分 ; "この行のデータを「削除済」にしてもok?" ; "この行のデータを削除済みから「有効」に戻してもok?" )]
        If [Get (最終メッセージ選択) = 2)
            レコード/検索条件復帰 [ダイアログあり:オフ]
        End If

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, 7 queries executed - Memory usage: 557.84 KiB (Peak: 581.83 KiB) ]