【FileMaker】某○xcelみたいに行の間に行を追加したいんです

というお題で仕事をしたので、Tipsとして残しておきます。

要は、こういう感じです。
addLine1.png

LineNo2行目と3行目の間に、行をどんどん追加していっています。
ついでにLineNo2.5行目の間にもどんどん行を追加して行きます。

普通に新規レコードを追加すると、最終行に追加されて行きます。
その部分は同じですが、今回はソート機能を使うことで、LineNo順に行が増えていくような「錯覚」を起こしています。

テーブル設計

テーブルでは、
・シリアル番号を保持するフィールド
・新規作成行の際に自動で入るシリアル番号のフィールド
があれば十分です。
addLine2.png

スクリプト

単純に1行最終行に追加(青ボタン)

行の下に1行追加するスクリプトと共通で実装しています。
単純に1行追加するときは、スクリプトの引数にLineNoを指定せずに実行をします。
addLine3.png

行の下に1行追加(緑ボタン)

現在行をスクリプトの引数として渡し、次の行のLineNo(図中(1))との等分(図中(2))を求め、新規作成行のLineNoにします。
常に等分しますので、選択している(ボタンを押した)行のLineNoと次の行の中間の値になります。
最後に、LineNoを昇順でソート(図中(3))します。
addLine4.png

行の削除(赤ボタン)

行を削除しています。
エラーを出したり削除フラグを設けない場合は、スクリプト化しなくても動きます。
addLine5.png

データのリセット(Data Resetボタン)

行追加にはなくても問題ないですが、テストを進める時に必要だったので作りました。
テーブルデータを削除(図中(1))してシリアル番号を1に戻しています。(図中(3))
ただ、FileMakerのバージョン12〜14ではテーブルデータを1行の削除できないので、エラー処理と12〜14で実行した時でもテーブルデータが削除できるように実装しています。(図中(2))
addLine6.png

レイアウト設計

このレイアウトは、LineNoの昇順になっていることが条件なので、レイアウトが表示された段階でソートが動くようにスクリプトを作成してスクリプトトリガのonLayoutEnterで指定しています。
addLine7.png

まとめ

今回のTipsのような行間に行を追加というのは、某○xcelでは標準実装ですね。
FileMakerでも同じように行間に行を追加したい、という場合、どうぞ参考にしてください。

サンプルで作成したファイルは、Githubで公開していますので、ダウンロードして動きを確認してみてください。
addLine.fmp12というファイル名です。
Github Repository : FileMakerSample