4 返信 最新の回答 日時: May 16, 2015 8:51 PM ユーザー:coyayac

    画面のフィールドの内容が1つでも変更されたかの判断方法

    coyayac

      タイトル

      画面のフィールドの内容が1つでも変更されたかの判断方法

      フォーラムに投稿

      伝票の入力画面に「更新」ボタンを付けて伝票の更新、「戻る」ボタンをつけてメニューに戻るようにしています。

      「戻る」ボタンを押した時に、もし伝票のフィールドの内容が一つでも変更されていれば「更新しますか?」のメッセージ表示をしたいのですが、フィールドの内容が1つでも変更されているかの判断はどのような方法がありますでしょうか?

      なにか案がいただけると助かります。

        • 1. Re: 画面のフィールドの内容が1つでも変更されたかの判断方法
          sago350@未来Switch

          レイアウトの設定の「レコードの変更を自動的に保存する」のチェックを外せば、更新するタイミングでダイアログが出てくるようになりますが、どうでしょうか。

          スクリプトトリガのOnRecordCommitのタイミングでも判定できますよ。

          • 2. Re: 画面のフィールドの内容が1つでも変更されたかの判断方法
            coyayac

            sago35さん、ありがとうございます。

            いま、[戻る]ボタンを押した時に毎回メッセージを表示して、[更新して戻る][更新しないで戻る]を選択するようにしています。

            できればそこから一歩進んで、入力画面を閉じる時にもし入力された内容があれば、[更新して戻る][更新しないで戻る]メッセージを表示して、入力された内容がなければなにもぜずに画面を閉じたいと思っています。

            例えば、EXCELではファイルを閉じた時に、

            ・EXCEL内容が変更されていれば「変更を保存しますか?」

            ・EXCEL内容が変更されていなければ、なにもメッセージを出さずにファイルを閉じる。

            となりますが、これをイメージしています。

            • 3. Re: 画面のフィールドの内容が1つでも変更されたかの判断方法
              sago350@未来Switch

              入力画面にあるフィールドと同じだけけのグローバルフィールドを用意して判定させる。

              もうひとつテンポラリ的なテーブルを作って、入力するときはそこにコピーし、戻る時に変更箇所を判定させる。

              のような方法が考えられます。
              どっちにしろFileMakerの標準機能では出来ないので、そういう動きをする仕組みを作るしか無いかなと。

              • 4. Re: 画面のフィールドの内容が1つでも変更されたかの判断方法
                coyayac

                sago35さん

                いつもありがとうございます。

                あのあと色々試してみて、レイアウトのスクリプトトリガーの「onLayoutKeystroke」を利用して近いところまではできそうだったのですが、このトリガーがキータッチ以外のドロップダウンリストでの変更などでは起動せず断念しました。

                >入力画面にあるフィールドと同じだけけのグローバルフィールドを用意して判定させる。

                >もうひとつテンポラリ的なテーブルを作って、入力するときはそこにコピーし、戻る時に変更箇所を判定させる。

                入力のみ(”A"に”A"を上書きした場合でも入力とみなす)の判定でも、頂いた返答のような作り込みが必要そうなので、時間があるときにじっくりチャレンジしてみようと思います。