みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
ご閲覧頂きありがとうございます。
下記につきまして、イメージ通りできずに悩んでおります。
お力添えを宜しくお願い申し上げます。
使用:FileMaker Pro 8
複数フィールドに「1」の文字があった場合、指定の文字を結合したいと考えております。
その文字の結合を「;」で区切りたいのですが、
文字列が入力されていないフィールドのものに関しては「;」をつけずに次のフィールド内容を表示したいのです。
例えば下記のような3つのフィールドがあるとします。
フィールド1:1 → メモ1
フィールド2:(空白)
フィールド3:1 → メモ3
こちらを
「メモ1;メモ3」と表示されるようにしたいのです。
私が作ってみたのが、
Substitute (フィールド1 ; "1" ; "メモ1" ) & " ; " &
Substitute ( フィールド2 ; "1" ; "メモ2" ) & " ; " &
Substitute ( フィールド3 ; "1" ; "メモ3" )
これだと
「メモ1;;メモ3」と、フィールド2の空白であるものに関しても「;」で区切られてしまいます。
各フィールドに文字が入っているものだけを「;」で区切り結合するにはどのような関数になりますでしょうか。
どうぞ宜しくお願い申し上げます。
Offline
Substitute ( List ( Substitute (フィールド1 ; "1" ; "メモ1" ) ; Substitute ( フィールド2 ; "1" ; "メモ2" ) ; Substitute ( フィールド3 ; "1" ; "メモ3" ) ) ; ¶ ; ";" )
Offline
> Substitute (フィールド1 ; "1" ; "メモ1" ) & " ; " &
これを
Substitute (フィールド1 ; "1" ; メモ1 & " ; " ) &
として、
最後の " ; " を取ればいいでしょう。
> "メモ1"
これは間違いですよね。
Subsutituteを使いますか!
フィールド1,2,3
は1か空白が条件ですね。
Offline
Shinさんが先に・・
って、私も考えましたが、
FM8にはListが無いですよね。
Offline
Shin様
チポ様が言うように
List関数が使えないのです…
Offline
チポ様
「;」という文字で区切りを表示したいのでこれだと
メモ1&
とだけの表示なってしまいました。
Offline
FM8ですか ^^!!
Offline
フィールド値は、「空」か「1」のどちらかのみ ならば、
Substitute置換えが使えるので、こんな感じかな、
Let([
#txt=
Substitute(フィールド1; [1; ";メモ1"])
&
Substitute(フィールド2; [1; ";メモ2"])
&
Substitute(フィールド3; [1; ";メモ3"])
];
Middle(#txt; 2; Length(#txt))
)
Last edited by Hiro (2018-03-17 01:28:49)
Offline
Substitute (
"|" & Substitute(フィールド1; "1"; ";メモ1") & Substitute(フィールド2; "1"; ";メモ2") & Substitute(フィールド3; "1"; ";メモ3") ;
[ "|;" ; "" ];[ "|" ; "" ]
)
Last edited by Shin (2018-03-17 10:14:20)
Offline
Hiro様
ありがとうございます。
大変助かりました!
もしお時間がございましたら、
フィールド値が、「0」か「1」のどちらかのみという
関数はどちらかを書き換えたらよろしいのか教えて頂くことは可能でしょうか?
Offline
Shin様
ありがとうございます!
大変助かりました。
無事に出来ました!
Offline
私のレスは
Substitute (フィールド1 ; "1" ; メモ1 & " ; " ) &
Substitute (フィールド2 ; "1" ; メモ2 & " ; " ) &
Substitute (フィールド3 ; "1" ; メモ3 & " ; " )
として、その結果の最後に必ず「;」が付くからそれを取り除く。
と書いたつもりでしたが、、
> フィールド値が、「0」か「1」のどちらか
ならば、Case関数を使った方が簡単でしょう。
考え方は似たようなものですから出来るのでは。
Offline
#10> フィールド値が、「0」か「1」のどちらかのみという関数はどちらかを書き換えたら
「空」「0」「1」の3択値で「1」の場合のみ、反応させたいなら、
Let([
#txt=
Substitute(フィールド1; [0; ""] ; [1; ";メモ1"])
&
Substitute(フィールド2; [0; ""] ; [1; ";メモ2"])
&
Substitute(フィールド3; [0; ""] ; [1; ";メモ3"])
];
Middle(#txt; 2; Length(#txt))
)
Offline
チポ様
ヒントをありがとうございます!
やってみます!
Offline
Hiro様
なるほど!
勉強になります。
ありがとうございます、とても助かりました!
Offline
Pages: 1
[ Generated in 0.006 seconds, 10 queries executed - Memory usage: 529.77 KiB (Peak: 550.31 KiB) ]