みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
フィールド1、フィールド2、フィールド3にそれぞれデータを入力しています。
使用者が任意に各フィールドのデータを結合(&)してフィールド4に書き込むスクリプトを作成できるでしょうか。
任意に選択する方法として、チェックボックスを作成して、チェックされたものを、結合して書き込みたいのですが、フィールド1、フィールド2、フィールド3とは別にチェックボックスをどのように作成したらよいかわかりません。
ご教示いただければ幸いです。
Offline
結合する並び順は?
常にフィールド1・2・3の順
チェックを入れた順
その他?
Offline
結合する順番は固定ですか。
フィールド名をそのまま値一覧にしたら、Evaluate(Substitue(結合指定;¶;"&"))とかやるとチェックした順に連結されるかな。
スクリプトでなくとも計算式で自動取得できます。
チェックボックスの選択内容から結合式を"テキスト"生成して、Evaluate("結合式")で評価すると良いでしょう。
結合式の式例は Evaluate(Substitute(チェックボックスフィールド; ¶; "&"))
なお、チェックボックスフィールドの選択値は 『フィールド1 [¶ フィールド2 ¶ フィールド3] 』
ただし、チェックボックスの選択内容はチェックした順でリストアップされるので、結合結果はチェック順となります。決まった結合順がある場合はFilterValues(決まった順一覧;選択一覧)で順編集します。
Last edited by Hiro (2014-04-30 15:23:08)
Offline
「Hiro」さん
初心者のため理解不足で申し訳ありません。
チェックボックスはどのように作成したらいいのでしょうか。
フィールド1、フィールド2、フィールド3と同じテーブルに作成するのでしょうか。
その場合、値一覧はどのように設定すればいいのでしょうか。
Offline
1.値一覧「フィールド名一覧」の設定はカスタム値に、
フィールド1
フィールド2
フィールド3
と固定値リストを設定。(実際のフィールド名を列挙)
2.テキストフィールド「チェックボックスフィールド」を作り、オプション設定の表示形式:編集ボックス→チェックボックスへ変更、その値一覧に「フィールド名一覧」を選択。
3.目的の「結合フィールド」計算フィールドを作り、その計算式に下式を選択定義。
・チェックした順結合で良ければ、
Evaluate(Substitute(チェックボックスフィールド; ¶; "&"))
・フィールド名一覧の表示順で結合なら、
Let([
#valuelist=ValueListItems(Get(ファイル名);"フィールド名一覧");
#checkbox=チェックボックスフィールド;
#checkbox=FilterValues(#valuelist;#checkbox);
#checkbox=Substitute(#checkbox & "_end_"; ["¶_end_";"_end_"];["_end_";""])
];
Evaluate(Substitute(#checkbox; ¶; "&"))
)
Last edited by Hiro (2014-05-01 12:12:54)
Offline
「Hiro」さん
ご丁寧に有難うございました。
できました。
Offline
Evaluate(Substitute(チェックボックスフィールド; ¶; "&"))
フィールドとフィールドが改行されず、くっついているのですが、各フィールド間を改行するにはどうしたらいいでしょうか。
ちなみに環境はWindows FileMakerは12です。
Offline
Evaluate(Substitute(チェックボックスフィールド; ¶; "&"))
↓
Evaluate(Substitute(チェックボックスフィールド; ¶; "&\¶&"))
Offline
「Hiro」さん
有難うございました。
改行できました。
Offline
何度もすみません。
選択したフィールドを結合フィールドに入れることはできたのですが、フィールドのタイトルもあわせて、結合フィールドにいれることもできるでしょうか。
「フィールド1のタイトル」改行
「フィールド1の内容」改行
「フィールド2のタイトル」改行
「フィールド2の内容」
Offline
もう質問変更はありませんか?
前の式は完全ボツなので、新たな式でないと、
Let([
$chb=チェックボックスフィールド;
$res="";
$fnc="Case(
IsEmpty($chb); $res;
Let([
$name=GetValue($chb;1);
$res=List($res;List($name;Evaluate($name)));
$chb=MiddleValues($chb;2;ValueCount($chb))
]; Evaluate($fnc))
)"
];
Evaluate($fnc)
)
Offline
「Hiro」さん
毎回ご丁寧なご回答ありがとうございます。
できました。
Offline
Pages: 1
[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 525.18 KiB (Peak: 545.72 KiB) ]