みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
filemakerpro12Macを使用しております。
テキストフィールドに以下のような改行区切りのテキスト(材料名と数量の区切りにtab)があります。
(材料)
-----------------------------
豚肉 約50g
うどん 1玉
ごま油 小さじ1
めんつゆ 小さじ
-----------------------------
※品目によって行数は増減します。
ここから一行ごとにレコードとして材料と数量に分けてポータルに表示したいと考えてます。
(材料名)(数量)
-----------------------------
豚肉 約50g
-----------------------------
うどん 1玉
-----------------------------
ごま油 小さじ1
-----------------------------
めんつゆ 小さじ
-----------------------------
改行区切りテキストを行単位でレコード化するにはどうしたらいいのでしょうか。
レコード化した後は、材料フィールドと数量フィールドに分けることになると思いますが、そこまで一気に変換することは可能でしょうか。
ご教授お願い致します。
Offline
・テキストフィールドを繰り返しフィールドへ持ち替えて、
・別途ポータルテーブルへ「繰り返しフィールドをレコード分解する」オプション指定でインポート。
・「レコードID」などをキーに関連レコードをポータル表示させて完了。
なお、繰り返しフィールドは2つの計算フィールドとし、その式は、
・「材料名」 GetValue(Substitute(GetValue(テキストフィールド[1]; Get(計算式繰り返し位置番号)); [" ";¶]); 1)
・「数量」 GetValue(Substitute(GetValue(テキストフィールド[1]; Get(計算式繰り返し位置番号)); [" ";¶]); 2)
Offline
Hiroさんありがとうございます。
繰り返しフィールドを分解してレコード化するスクリプトを作成し、テキストフィールドにスクリプトトリガを設定すれば自動的にできるって具合ですかね。
それから繰り返しフィールドの計算式は、tabの部分を「Char(9)」に変更してOKでした。
・「材料名」 GetValue(Substitute(GetValue(テキストフィールド[1]; Get(計算式繰り返し位置番号)); [Char(9);¶]); 1)
・「数量」 GetValue(Substitute(GetValue(テキストフィールド[1]; Get(計算式繰り返し位置番号)); [Char(9);¶]); 2)
Offline
Table_A::f1 に (材料)が入っているモノとして、
Table_B の フィールド:f1 に材料名、フィールド:f2 に数量を入れるスクリプトの例です。
Table_A と Table_B のリレーションを設定。
Table_B は、レコードの作成を許可に設定。
(このリレーションシップを使用して、このテーブルでのレコードの作成を許可)
Table_A
ポータル Table_B が表示されているレイアウトで以下のスクリプトを実行。
変数を設定 [$List; 値:Table_A::f1]
変数を設定 [$MAX; 値:ValueCount ( $List )]
変数を設定 [$n; 値:1]
Loop
Exit Loop If [$n>$MAX]
フィールドへ移動 [Table_B::f1]
ポータル内の行へ移動 [選択; ダイアログなし; $n]
変数を設定 [$val; 値:GetValue ( $List ; $n )]
フィールド設定 [Table_B::f1; GetValue(Substitute($val; [Char(9);¶]); 1)]
フィールド設定 [Table_B::f2; GetValue(Substitute($val; [Char(9);¶]); 2)]
変数を設定 [$n; 値:$n+1]
End LoopOffline
qb_dpさんありがとうございます。
教えていただきましたスクリプトでOKでした。
そして改行区切りのテキストのフィールドにスクリプトトリガを設定して、値変更したところポータル先も変更されておりOKでした
Offline
一旦解決はしたのですが、一つ気になることが出ました。
改行区切りのテキストのフィールドの内容が一部(一行)削除された場合、ポータルの方には削除したデータが残ったままになります。
この場合、改行区切りのテキストのフィールド一部削除したらポータルの方を手動削除と言うことでしか方法ないのでしょうか
Offline
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 557.53 KiB (Peak: 581.41 KiB) ]