というお題で仕事をしたので、Tipsとして残しておきます。
LineNo2行目と3行目の間に、行をどんどん追加していっています。
ついでにLineNo2.5行目の間にもどんどん行を追加して行きます。
普通に新規レコードを追加すると、最終行に追加されて行きます。
その部分は同じですが、今回はソート機能を使うことで、LineNo順に行が増えていくような「錯覚」を起こしています。
テーブル設計
テーブルでは、
・シリアル番号を保持するフィールド
・新規作成行の際に自動で入るシリアル番号のフィールド
があれば十分です。
スクリプト
単純に1行最終行に追加(青ボタン)
行の下に1行追加するスクリプトと共通で実装しています。
単純に1行追加するときは、スクリプトの引数にLineNoを指定せずに実行をします。
行の下に1行追加(緑ボタン)
現在行をスクリプトの引数として渡し、次の行のLineNo(図中(1))との等分(図中(2))を求め、新規作成行のLineNoにします。
常に等分しますので、選択している(ボタンを押した)行のLineNoと次の行の中間の値になります。
最後に、LineNoを昇順でソート(図中(3))します。
行の削除(赤ボタン)
行を削除しています。
エラーを出したり削除フラグを設けない場合は、スクリプト化しなくても動きます。
データのリセット(Data Resetボタン)
行追加にはなくても問題ないですが、テストを進める時に必要だったので作りました。
テーブルデータを削除(図中(1))してシリアル番号を1に戻しています。(図中(3))
ただ、FileMakerのバージョン12〜14ではテーブルデータを1行の削除できないので、エラー処理と12〜14で実行した時でもテーブルデータが削除できるように実装しています。(図中(2))
レイアウト設計
このレイアウトは、LineNoの昇順になっていることが条件なので、レイアウトが表示された段階でソートが動くようにスクリプトを作成してスクリプトトリガのonLayoutEnterで指定しています。
まとめ
今回のTipsのような行間に行を追加というのは、某○xcelでは標準実装ですね。
FileMakerでも同じように行間に行を追加したい、という場合、どうぞ参考にしてください。
サンプルで作成したファイルは、Githubで公開していますので、ダウンロードして動きを確認してみてください。
addLine.fmp12というファイル名です。
Github Repository : FileMakerSample