FileMakerポータル行の追加・削除ボタン実装術
基礎知識

FileMakerポータル行の追加・削除ボタン実装術

2026年6月10日 admin 基礎知識

FileMakerでポータルを使っていると、「行を追加するボタン」「行を削除するボタン」をきれいに付けたい、と思う場面がよくあります。ですが、ボタンの付け方やスクリプトの書き方が分からず、つい手作業で行を追加・削除してしまうことも少なくありません。

この記事では、ポータル行の追加・削除をボタンで直感的に操作できるようにする方法を、できるだけ専門用語を避けて解説します。レイアウト編集やスクリプトの基本操作が分かる方なら、すぐに取り入れられる内容です。

ポータル行の追加・削除ボタンを付けるメリット

まず、ポータル行の操作をボタン化するメリットを整理しておきます。

  • ユーザーが迷わず操作できる:+ボタンで追加、ゴミ箱アイコンで削除など、直感的に使える。
  • 誤操作を減らせる:削除前に確認ダイアログを出すことで、うっかり削除を防げる。
  • 入力ルールを組み込みやすい:空行は追加しない、必須項目が埋まっていないと追加させない、などのチェックがしやすくなる。
  • 運用ルールを統一できる:どの画面でも同じ操作感にでき、社内の問い合わせも減らしやすい。

基本の考え方:ポータル行は「関連レコード」

ポータルに表示されている1行1行は、単なる「行」ではなく、別テーブルの関連レコードです。そのため、実際には「行を追加・削除する」というより、

  • 関連レコードを新規作成する(=行が増える)
  • 関連レコードを削除する(=行が消える)

という動きになります。ですので、ボタンも「関連レコードの新規作成・削除」を行うスクリプトだとイメージしておくと分かりやすいです。

ポータル行に「追加ボタン」を付ける手順

ここでは、親テーブル「受注」、子テーブル「受注明細」というよくある例で説明します。「受注明細」を表示するポータルに、行追加ボタンを用意してみます。

1. スクリプトを作成する

メニューから[スクリプト]→[スクリプトワークスペース]を開き、次のような流れのスクリプトを作ります。

  1. ポータルのあるレイアウトを対象にする(すでに開いていればそのままでOK)
  2. 「関連レコードの新規レコード作成」 を実行
  3. 必要に応じて初期値をセットする(例:数量に「1」を入れるなど)
  4. 最後に必要なフィールドへカーソルを移動する

実際のステップ例:

  • ステップ1:関連レコードの新規レコード作成(対象:ポータルで使っているリレーション名)
  • ステップ2:フィールド設定(例:数量 = 1)
  • ステップ3:フィールドへ移動(ユーザーに入力してほしいフィールド)

最低限、「関連レコードの新規レコード作成」だけでも、ポータルの新しい行が1行増えます。

2. レイアウト上にボタンを配置する

  1. レイアウトモードに切り替える。
  2. ポータルの外側に、「+」などのテキストまたはアイコンを置く。
  3. それを選択して[ボタン設定]で、先ほど作成したスクリプトを割り当てる。

ポータルの「中」ではなく「外」に配置することで、「常に一番下に行を追加する」ボタンとして動作させることができます。

ポータル行ごとに「削除ボタン」を付ける方法

削除ボタンは、各行の右端などに配置し、その行に対応するレコードだけを消すようにします。

1. 削除用スクリプトを作る

同様にスクリプトワークスペースで、次のようなスクリプトを作ります。

  1. (任意)確認ダイアログを表示する
  2. OKが選ばれた場合のみ、対象レコードを削除する

ステップ例:

  • ステップ1:カスタムダイアログを表示
    メッセージ:「この行を削除してもよろしいですか?」
    ボタン:「削除する」「キャンセル」を設定。
  • ステップ2:If[Get ( 最後のメッセージ選択 ) = 1]
        レコード削除[ダイアログあり/なしはお好みで]
    End If

この「レコード削除」は、実行されたコンテキスト(その行)のレコードに対して行われます。

2. ポータル内に削除ボタンを配置する

  1. レイアウトモードで、ポータルをクリックして中の行を編集できる状態にする。
  2. ポータル行の右端あたりに、小さなテキスト「×」やゴミ箱アイコンを配置する。
  3. それをボタンにし、削除スクリプトを割り当てる。

ポイントは、ボタンが「ポータル行の中」に入っていることです。こうすることで、どの行のボタンが押されたかをFileMakerが判断し、その行のレコードを削除してくれます。

よくあるつまずきポイントと対処法

削除ボタンで「違う行が消える」場合

削除ボタンがポータル行の外に出てしまっていることが多いです。レイアウトモードで、ボタンがポータルの内側に収まっているかを確認しましょう。

追加したはずなのに行が増えない場合

  • リレーション条件に合う値がセットされていないと、ポータルに表示されません(親側の主キーが空など)。
  • 親レコードがまだ保存されていない場合にも表示されないことがあります。親側のレコードを先に確定させておきましょう。

誤削除が不安な場合

  • 必ず確認ダイアログを挟む。
  • 削除せず、「フラグ」を立てる方式にして、後でまとめて無効行を処理する運用にする。

少し応用:最後の空行を自動で無くす工夫

よくある要望として、「空の行がいつまでも残るのは見た目が悪い」というものがあります。そんな場合は、

  • 追加スクリプトで、必須項目が空なら新規レコードを作らない
  • 削除スクリプトで、最後の1行だけは削除せず、空行として残す/残さないを決める

といったルールをスクリプトに組み込むことができます。最初から完璧を目指さず、まずは「+で追加」「×で削除」ができるようになってから、少しずつ改良していくと運用に合った仕組みになりやすいです。

まとめ

  • ポータル行は「関連レコード」なので、追加・削除はレコード操作として考える。
  • 行追加は「関連レコードの新規レコード作成」ステップを使う。
  • 行削除はポータル行内のボタンから「レコード削除」スクリプトを呼び出す。
  • 確認ダイアログや入力チェックを組み込むことで、誤操作を防げる。

ポータル行に追加・削除ボタンを実装しておくと、ユーザーの操作性がぐっと上がり、トラブルも減らしやすくなります。まずはシンプルなスクリプトで動かしてみて、使いながら少しずつ改善していきましょう。

※ 本稿は、生成AIを使用して執筆しています。重要な内容については、必ずご自身でマニュアル等をご確認ください。