第107回 レコードを明示的に保存する
こんにちは。エヌ・ケイ・カスタマイズの沖田です。
先週は、弊社が「鹿児島ユナイテッドFC」様のマッチスポンサーとなるスペシャルマッチがあり、無事終えることができました。弊社ブースへ来られた方々、ありがとうございました。そして、試合も勝利して記憶に残る1日となりました!
さて、今回はレコードの編集内容を Claris FileMaker の機能で自動的に保存するのではなく、ユーザがボタンを押すことで明示的に保存するようにします。また、変更を破棄するためのボタンによって変更前の状態に戻せるようにします。
よく、「入力をして、登録ボタンを押した時に保存できる仕組みにできませんか?」と聞かれることも実際多いです。構築の仕方はいろいろあるのですが、今回記載するのはそのうちの1つの方法として覚えて頂ければと思います。
以下の記事は、Claris FileMaker 関数・スクリプトガイド(バージョン 19 対応)より、
Claris FileMaker 公式トレーニング教材
「20.レコードを明示的に保存する(818ページ)」を元に掲載しています。
この文献から、スクリプトトリガとグローバル変数を使って、Claris FileMaker のレコード自動保存機能をキャンセルしてしまう、というちょっと高度な技を学習することができました。文献の執筆者、関係者の方々に深謝いたします。
なお、このブログ記事の趣旨は、弊社所属スタッフの Claris FileMaker 学習の成果を公開することを目的とし、同時に、参考文献の内容の紹介に資するものであることを Claris International Inc. が確認しています。
考え方
OnRecordCommit スクリプトトリガを使えばレコードの変更が確定(保存) される際にスクリプトを実行できます。保存ボタンが押されたときだけレコードの確定が行われるスクリプトを作成してスクリプトトリガに割り当てます。
関数・スクリプト実装例
(1) レイアウトにボタンと注意書きを配置します。
・レコードの変更を確定(保存) するためのボタン( 「保存」) と変更を破棄するためのボタン( 「キャンセル」) を配置します。
・レコードが変更されたときに保存を促す注意書きを表示するラベルを配置します。
・配置したボタンとラベルがレコードが変更されていないときに表示されないように[ 次の場合にオブジェクトを隠す] 設定を行います。ここでは取得関数の Get ( レコードのオープン状態 ) を使用してレコードの状態を取得します。レコードが確定されている(変更されていない) 状態では[ 0] が返ります。
◇ Get(レコードのオープン状態とは?
|
・ 配置したボタンとラベルがレコードが変更されていないときに表示されないように[ 次の場合にオブジェクトを隠す] 設定を行います。ここでは取得関数の Get ( レコードのオープン状態 ) を使用してレコードの状態を取得します。レコードが確定されている(変更されていない) 状態では[ 0] が返ります。
(2) レコードが自動的に確定されないようにスクリプトトリガを設定します。
・ [レイアウト設定] の [スクリプトトリガ] から OnRecordCommit スクリプトトリガにスクリプトを作成します。
・グローバル変数( $$確定フラグ ) が[ 1] の場合にレコードが確定されるようにします。 [現在のスクリプト終了] の [結果] を[ 1] にすれば OnRecordCommit スクリプトトリガが実行されレコードが確定されます。[ 変数を設定] スクリプトステップでグローバル変数の値もリセットします。
・それ以外の場合はレコードが確定されないようにします。 [現在のスクリプト終了] の [結果] を[0]にすれば OnRecordCommit イベントがキャンセルされレコードが確定されません。[ ウインドウ内容の再表示] でボタンとラベルに設定した [次の場合にオブジェクトを隠す] を評価しています(レコードに変更があったとき表示される)。
(3) ボタンにスクリプトを割り当てます。
・「保存」ボタンのスクリプトを作成して割り当てます(ボタン設定)。グローバル変数に[ 1]を設定します。[レコード/検索条件確定] が実行されると OnRecordCommit スクリプトトリガが発生してレコードが確定されます。レコードの確定後には[ ウインドウ内容の再表示] で [次の場合にオブジェクトを隠す] が評価されます(レコードが確定されたので非表示になる)。
・「キャンセル」ボタンに [レコード/検索条件復帰] を割り当てます(単一ステップ)。レコードの変更は破棄されて変更前の状態に戻ります。
実行
(A) レコードを変更したとき: 保存ボタン・キャンセルボタンと注意書きのラベルが表示されます。
(B) レコードの変更後に 「保存」ボタンを押したとき: レコードの変更が確定(保存) されます。
(C) レコードの変更後に 「キャンセル」ボタンを押したとき: レコードの変更が破棄され、変更前の状態に戻ります。
まとめ
今回は、レコードを明示的に保存する方法について学習しました。このような方法は、他にもグローバルフィールドを用いた方法などいくつかあります。
いずれにしても、この明示的に保存する仕組みは、要望が多いですので、是非覚えておいて損はないと思います。
次回も引き続きよろしくお願い致します。
それでは、来週もお楽しみに!
参考文献: Claris FileMaker 公式トレーニング教材 から、「Claris FileMaker 関数・スクリプトガイド」等を参考にしています
https://content.claris.com/fmb19_reg-ja