FileMaker Advent Calendar 2015の19日目
「「「FMC2Goスケジューラーにおけるスケジュールの自動アップデート機能」のつづき」のつづき」のつづき
だんだんタイトルが長くなってきている気がしないでもありませんが、このパートは今回で一段落です
どうやってセッションのデータが更新されるか実際に見てみる
どうやってセッションのデータが更新されるか実際に見てみる
レコードのインポート(一致するレコードを更新)で処理しているようです
詳しくは
ホーム > データの共有 > データの保存、インポート、およびエクスポート > FileMaker Pro へのデータのインポート
を参照
既存の FileMaker Pro ファイルへデータをインポートすると、次の処理を実行することができます。
- インポート元のファイル(ソースファイル)から新しいレコードを追加する
- インポート元のファイルの情報でレコードを更新する
- インポート元のファイルの情報で一致するレコードを更新する
このブロックでは
- セッション情報のインポート用のレイアウトに切り替え
- レコードのインポート(一致するレコードを更新)
- Get( 最終エラー )でエラーが検出されたらローカル変数「$err_msg」にエラーメッセージを設定
こういう紐付けでインポート
ここからがキモ
「対象外のみ表示」スクリプトステップを実行することで、今回のアップデートに含まれていなかった「__kp_Schedule_ID
(アップデートファイル側では:__kp_Session_ID
)」をキーに持つセッションが対象レコードとして取得できます
その対象レコードを「対象レコード削除」とすることで古い(更新されなかった)「Schedule」テーブルのレコードを一括で削除しています
これは「一致するレコードを更新」した時に、インポートされたレコード(更新対象になったレコード)が対象レコードになるFileMakerの仕組みを上手く使っているようです
情報に更新があっても、なくてもオンステージにあるレコードをアップデートに全て含めることで、今回のアップデートに含まれなかったレコード=消してしまいたいレコード(=なんらかの事情でなくなったセッション)と扱っているようです
片方向のレコード同期のソリューションとしては一番単純かつ確実な方法かなと
おなじような仕組みで「Speaker」と「SessionSpeaker」と「Vendors」の内容を更新しているようです
そして最後まで「$err_msg」に値が入らなければ更新がエラー無く終わったとしているようです
よくわからなかった処理
よくわからない処理だったこのブロック
「Speaker_Photo_FullSize」を「zz_Photo_Import_Staging」で
「Speaker_Company_Logo」を「zz_Logo_Import_Staging」で
差し替えるような処理をしているようだ
しかしインポートの紐付けを見てみると「zz_Photo_Import_Staging」、「zz_Logo_Import_Staging」ともにインポート対象になっていない
なにか裏ワザ的なものが仕込まれているのだろうか?
今回はインポート対象となっていないので、「not IsEmpty」の条件では処理対象にならないようだ
Speakerのインポート紐付け
今回で「FMC2Goスケジューラーにおけるスケジュールの自動アップデート機能」関連は終わり
明日はまた別のことを取り上げます