マジックキー (パート2)

マジックキーのテクニックを紹介するFileMakerHacks Kevin Frankさんのブログ記事の後半です。


FileMaker Hacks logo

Magic Key, part 2

(元記事はこちら)

Kevin Frank
2011/8/1

前回の記事の最後で、紹介したテクニックの改良を約束していました。不要な繰り返しを避けるために、この記事を読んでいる皆さんが前回の記事をすでに読んだことを前提に話を進めます。

まず最初にスクリプト“parse current field”のハイライトした部分のステップを削除します。magickey_p2_1「フィールド設定」のステップ一つだけで、本当に関連レコードを作成して複数のフィールドに値を設定できるのか、疑問に思うかも知れません。

今回のデモファイルmagic-key-multipredicate-check-box-reportingを使って、手順を一つずつ見ていきます。

複数キーによる“作成を許可”するリレーションシップ

それではこれから、一つの「フィールド設定」ステップを使って、Tasksテーブルに以下のようなレコードを作成し、ハイライトされたフィールドに値を設定します。

そのためには、単一キーのマジックキーのリレーションシップを…

…下の図のような複数キーに変更します。(あらかじめVolunteersテーブルにグローバルテキストフィールドg_categoryを定義しておきます。)

すべての関係演算子がイコール(=)であれば、「レコードの作成を許可」は機能します。またスクリプト「parse current field」から、「フィールド設定」ステップを2つ減らすことができます。その他の修正点は、前回のデモファイルでは$fieldに値を設定していたところを、g_categoryに変更しています。

magickey_p2_2

セッションキー

次の修正として、一連の処理をマルチユーザ環境に対応させます。前回のデモファイルで2人のユーザが同時にスクリプトを実行した場合、正しい結果を得ることができません。その場合、以下のようなことが起こりえます。

  • 誤った報告値に基づくビジネス上の判断
  • システムに対する信頼を失う
  • 開発者に対する信頼を失う
  • FileMaker Proに対する信頼を失う

これを避けるために、次のように「セッションキー」を導入します。

1. Volunteersテーブルにグローバルテキストフィールドg_id_sessionを定義します。

2. Tasksテーブルに通常のテキストフィールドid_sessionを定義します。

3. volunteersとtasks_createの間のリレーションに新しいキーを追加し、ステップ1,2で作成したフィールドを結びます。

4. “startup”スクリプトに以下のステップを設定します。

magickey_p2_3

5. “report”スクリプトに以下の選択したステップを追加します。

magickey_p2_4

magickey_p2_5

これで、マルチユーザ環境でも安心してレポート作成を実行できます。

Leave a Reply