こんにちは。リナークのニシザワです。
今回の記事では、“FileMakerはレコードに入力するとデータが確定”してしまいます。
これどうにかなりませんか?
というコミット制御の方法についてご質問を多くいただきます。
これを解決する方法を解説いたします。また、記事の最後にはサンプルソリューションをダウンロードしていただけます。ぜひ、ダウンロードして動作をご確認いただければ幸いです。
はじめに
FileMakerでデータベース管理を行う際に、レコード内のデータを編集すると自動的に保存されるという仕組みをご存知でしょうか?この仕組みはFileMakerの特徴の一つであり、データ入力の効率化や操作の簡素化に寄与しています。
そして、FileMakerのヘルプにも”データは作業中に保存されます”と記載されています。
実際に下記の操作をすると保存されると記載されています。
- レコード内のフィールド以外の部分をクリックする
- Enter キーを押す (下記のメモを参照)
- Windows:テンキーの Enter キー、または Ctrl+Enter (テンキーのないコンピュータの場合) を押す
- macOS:enter キー (return キーでは確定されません)、または fn-return (テンキーのないコンピュータの場合) を押す
- 他のモードに切り替える
- 他のレコードを選択する
- 他のレイアウトに切り替える
しかし、この自動的に保存されることでユーザーが意図しないデータ変更やパフォーマンスへの影響といった課題も抱えています。
今回の記事ではレコード内のデータの確定をしない方法。そして、その影響を正確に制御するためのコミット制御について、説明と実践を交えて詳しく解説いたします。開発者であれば誰もが直面するこの問題に対し、実用的な解決策を提供いたします。
社内開発者の方はもちろん、FileMakerプラットフォームに触り始めた方にとっても、データの制御はデータ管理と効率的な開発プロセスに不可欠なものです。具体的なメリット・デメリットから始めて、現場で直接役立つテクニックへとつなげていきます。
新しい開発手法に興味をお持ちの方、より高いレベルのデータ制御を目指す方に、この記事が一歩を踏み出す助けとなることを願っています。
メリットとデメリット
FileMakerではレコード内のデータを編集すると自動的に保存されるという特性があります。この特性はFileMakerでのデータベース管理において、様々なメリットとデメリットをもたらします。ここでは、それぞれの特徴と影響について解説いたします。
メリット
操作の簡便性
確定や保存ボタンを押す手間が省けるために作業効率が向上します。
データの即時反映
入力されたデータがすぐに保存されるため、データの整合性が保たれやすいです。
開発の柔軟性
自動保存を活用することで、多様な開発スタイルに対応することが可能になります。
デメリット
意図しない変更の危険性
確定操作がないためにユーザーが意図せずデータを変更してしまう可能性があります。
パフォーマンスへの影響
自動保存が高頻度に行われるとシステムのパフォーマンスに影響を及ぼすことがあるために注意が必要です。
この特性をどう活用するのか?
FileMakerでの自動保存機能はその使い方によって大いに活用できる一方、慎重に扱わなければならない側面も持ち合わせています。このメリットとデメリットのバランスを理解し、プロジェクトに最適な設定と実装を選ぶことが重要です。
そして、意図しない変更は誰も気づかずに編集をしていることがあります。その結果、データの信憑性が損なわれる可能性があります。
そのためには「レコード内のデータの確定をしない方法」が必要になる場面が必ず出てきます。それでは、次の”実践方法”ではコミットを制御する方法について実践いたします。
実践方法
FileMakerでレコード内データの保存を意図的にコントロールするためには、以下の手順で実装することが可能です。
スクリプトの実装
レイアウトのコントロールをするために、commitControlというスクリプトを実装します。
これは、グローバル変数である”$$Commit”を宣言しています。”$$Commit” を1(True)と宣言しない限り”$$Commit = 0(False)”という状態となるスクリプトです。
レイアウトの設定
レコード内のデータの自動確定をしたくないレイアウトの”OnRecordCommit”に、作成した”commitControl”スクリプトを設定します。
これは、”$$Commit ”をTrue(1)にしなければ、レコードを確定できないということになります。
動作確認
実際にこれを設定したレイアウトでデータの編集をしてみます。
FileMakerのヘルプに記載されている“レコード内のフィールド以外の部分をクリックする”をしていますが、このようにレコードを確定することができません。そのため、レコード復帰を行い編集前の状態に戻しました。
レコード復帰することで他のレコードを選択したり、他のレイアウトに切り替えることができるようになります。
活用方法
実際には編集用のレイアウトを新規ウインドウで呼び出し、データを編集することで”キャンセル”、もしくは”保存”をクリックするとレコード復帰、またはレコード確定になる動作を実装することで、実用的、かつ開発者が意図するコントロールができます。
これは”windowModalControl”というスクリプトで制御しています。
また、動画ではデータを編集したあとに保存ボタンをクリックしていますが、そのボタン設定は”現在のスクリプト終了”にしています。
おわりに
FileMakerにおけるレコード内のデータの自動保存機能は、データベース管理の現場で重要な役割を果たしています。この特性には操作の効率化やデータ整合性の保持などのメリットがある一方で、意図せずデータを変更するリスクなどのデメリットも存在します。
そして、今回は”レコード内データの保存を意図的にコントロールする”でシンプルに実装できる方法をご紹介いたしました。より制御を厳密にするためには、スクリプトの共通化や入力制限などのコントロールを実装することで、より柔軟なデータ編集を実装することができ、システム開発者の意図するコントロールを実現することができます。
また、ユーザーにとっても意図せず編集をしてしまうリスクを軽減でき、健全なデータベース管理が実現できると考えています。
FileMakerのこの特性は使い方によって大きな利点を享受できるものです。この記事の実践方法を学んでいただき、プロジェクトに最適な設定を選ぶことで、データベース管理をより効果的、効率的に行う道筋が見えてくることだと考えています。
この情報がみなさんの業務にお役に立てれば幸いです。
サンプルソリューション
今回の記事で使用したサンプルソリューションになります。
スクリプトや動作などをご確認いただければ幸いです。
※サンプルソリューションは、ZIP形式に圧縮しております。ダウンロード後に解凍してご利用ください。
※サンプルソリューションのご利用により生じた障害等に対する責任はいっさい負いかねますのであらかじめご了承ください。
※動作確認環境:macOS Ventura 13.4.1 / Claris FileMaker 2023
この記事にご興味を持たれた方は、こちらの記事もおすすめです。