【FileMaker】続・カテゴリごとに管理番号を振る インポート編(追記あり)

さて、久しぶりにお題が来ました。
【FileMaker】カテゴリごとに管理番号を振るという記事を2年前に書かせていただきましたが、この時は都度入力した時にカテゴリごとに管理番号を振るという動作でした。
サンプルファイルは大抵保存してあるのですが、ファイル名を忘れてしまったためにだいぶ探しました。。。
ありました!
えらい、私。
前回はFileMaker 16でサンプルを作成しましたが、基本的な関数などしか使用していないので、そのままFileMaker 18でも動きました。
今回は以前作ったサンプルファイルを元にFileMaker 18で作成していますが、同じく基本的な関数や機能しか使用していませんので、FileMaker 12以上でしたら確実に動くはずです。(はず、、はずです)

今回は、インポートした時などに一括でカテゴリ順に管理番号を振る場合です。

前回の記事の実装では、インポートした際にレイアウトに配置したスクリプトトリガが動きませんので、別途スクリプトを作成し、インポートをする際に自動でカテゴリ順に管理番号を振ルことにしました。

今回は自己参照や集計フィールドを使っていませんので、リレーションシップが苦手な方でもハードル低くなっていると思います。

では、早速実装方法を見ていきましょう。

データの準備

前回のレイアウトにそのまま追加します。(追加データざっと見るために表形式)
qiitaCategory1.png

ここに、カテゴリが記載されたデータをインポートします。
Excelで作成していますが、csvでもなんでもいいです。
qiitaCategory2.png

既存カテゴリだけでなく、新規のカテゴリデータとして、「KL」も追加してみました。

スクリプト

インポートを含めたスクリプトを作成しました。
qiitaCategory11.png

流れとしては、
1. インポート
2. データ表示とソート
3. 管理番号を振る
です。

ここでのポイントは2箇所あります。
・全レコードを表示&レコードのソート
・前レコードのカテゴリの保持と判定
です。
インポート後はインポートしたデータしか表示されませんので、そのままソートしてしまうとインポートしたデータのみソートがされてしまいます。
また、レコードのソートをし忘れると、カテゴリがまとまっていない状態なので意図したカテゴリ連番として管理番号が振られません。
なので、下の図の赤ワクのように管理番号を振る前準備を忘れずに行います。
qiitaCategory12.png

前レコードのカテゴリ保持と判定は、新規カテゴリがあった場合の処理として重要です。
前レコードのカテゴリが処理しているレコードと違う場合、seq変数に1を設定して1から連番になるように調整します。
この処理は管理番号が振られていないインポートしたてのデータにしか処理しませんので、既存のデータでカテゴリが切り替わった時には動きません。
次のレコードに行く前に、カテゴリを保存するpreCategory変数の上書きを忘れずに。
qiitaCategory13.png

実装は、これだけです。

動かしてみる

では、実際に動かしてみましょう。
FileMaker 18になってから、インポート順の設定画面も綺麗にわかりやすくなりましたね。
qiitaCategory8.png

こちらで用意したテストデータ44件が読み込まれました。
qiitaCategory4.png

さて、結果は。
素敵に追加されてカテゴリごとに管理番号の連番が行われています。
qiitaCategory5.png
qiitaCategory6.png

そして、新規追加のカテゴリも、きちんと管理番号が振られています。
qiitaCategory10.png

他にも方法あると思うけど

今回はインポート後に一括で処理するやり方をご紹介しました。
他にもやり方はあると思いますが、みなさまのシステム開発の一助となれば幸いです。

追記 (2019/07/26)

続々編を書きました。
【FileMaker】続々・カテゴリごとに管理番号を振る 最大値に追加
こちらもぜひ参考にしてください。