こんにちはジョージです。定番の「繰り返しフィールド」を使ったレコード分割を応用してみるよ!このテクニックは「Claris FileMaker 10 分でスキルアップ #158」の内容も含まれるので、あわせてチェックしてみてね ♪
接尾辞に連番がついたフィールドがいっぱい
レコードの親子関係を表現する場合、Access や SQL Server といった Claris FileMaker プラットフォーム以外のアプリケーションでは「繰り返しフィールド」という概念はございませんので、リレーションシップを使った「1 対 多」や「多 対 多」の関係になっていることがほとんどかと思います。
ごく稀にですが、接尾辞に連番を付与したフィールドを複数定義し、同一レコード内で「1 対 多」の関係を表現されているシステムも見受けられます。※ こんな感じ↓
それでは、レコードを親と子テーブルへ再配置し、正しく「1 対 多」の関係を表現できるように修正をしてみましょう!
カスタム App で繰り返しフィールドに変換
繰り返し数「10」の計算フィールドを作成して、「食材」接尾辞連番フィールドを「繰り返し計算フィールド」に変換します。
Extend ( GetField ( "食材" & Get( 計算式繰り返し位置番号 ) ) )
Extend 関数で評価することで、正しく「繰り返し計算フィールド」に値が収まります。Extend 関数で評価しない場合は「最初のひとつ」しか取得できませんので注意しましょう。同様に「数量」「説明」も「繰り返し計算フィールド」に変換します。
Extend ( GetField ( "数量" & Get( 計算式繰り返し位置番号 ) ) )
Extend ( GetField ( "説明" & Get( 計算式繰り返し位置番号 ) ) )
繰り返しフィールド化されたフィールドを確認
「繰り返しフィールド化」された「食材/数量/説明フィールド」の内容を、レイアウトに配置して確認してみましょう。しっかりと変換できていますね。
外部キーの追加
最終的には「レシピテーブル」「食材テーブル」に分割し 1 対 多 の関係にするので、食材テーブルで必要となる「外部キー」を追加します。これには現在のレコードの主キーを割り当てます。
__PK_ID
新しいカスタム App を作成
レシピと食材とで 1 対 多 の関係をもった、新しいカスタム App を作成します。新しいカスタム App では食材レコードはポータルで表現します。これで準備は完了です。
値を複数のレコードへ分割インポート
繰り返しフィールド化されたカスタム App のレコードをインポートします。インポートオプションとして繰り返しフィールドを「値を複数のレコードに分割」インポートオプションを有効にしてからインポートします。
インポートできました!きちんとレコードへ分割されポータルに表示されていますね。
やっかいな「接尾辞連番フィールド」も、一度「繰り返しフィールド」に変換してからレコード分割することで、かっこいい「1 対 多」の関係に修正することができました。なかなか便利な方法だと思いますので、皆様ぜひ試してみてくださいね!今夜はカレーにするか。