初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2018-03-16 17:47:18

MM
Member

フィールドの文字列の結合について

ご閲覧頂きありがとうございます。
下記につきまして、イメージ通りできずに悩んでおります。
お力添えを宜しくお願い申し上げます。

使用: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

#2 2018-03-16 18:27:05

Shin
Member

Re: フィールドの文字列の結合について

Substitute ( List ( Substitute (フィールド1 ; "1" ; "メモ1" ) ; Substitute ( フィールド2 ; "1" ; "メモ2" ) ; Substitute ( フィールド3 ; "1" ; "メモ3" ) ) ; ¶ ; ";" )

Offline

#3 2018-03-16 18:28:27

チポ
Member

Re: フィールドの文字列の結合について

> Substitute (フィールド1 ; "1" ; "メモ1" ) & " ; " &
これを
  Substitute (フィールド1 ; "1" ; メモ1 & " ; " ) &
として、
最後の " ; " を取ればいいでしょう。


> "メモ1"
これは間違いですよね。


Subsutituteを使いますか!
フィールド1,2,3
は1か空白が条件ですね。

Offline

#4 2018-03-16 18:30:13

チポ
Member

Re: フィールドの文字列の結合について

Shinさんが先に・・

って、私も考えましたが、
FM8にはListが無いですよね。

Offline

#5 2018-03-16 18:46:42

MM
Member

Re: フィールドの文字列の結合について

Shin様

チポ様が言うように
List関数が使えないのです…

Offline

#6 2018-03-16 18:48:15

MM
Member

Re: フィールドの文字列の結合について

チポ様

「;」という文字で区切りを表示したいのでこれだと
メモ1&
とだけの表示なってしまいました。

Offline

#7 2018-03-16 19:16:46

Shin
Member

Re: フィールドの文字列の結合について

FM8ですか ^^!!

Offline

#8 2018-03-17 01:25:31

Hiro
Member

Re: フィールドの文字列の結合について

フィールド値は、「空」か「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

#9 2018-03-17 10:12:22

Shin
Member

Re: フィールドの文字列の結合について

Substitute (
"|" & Substitute(フィールド1; "1"; ";メモ1") & Substitute(フィールド2; "1"; ";メモ2") & Substitute(フィールド3; "1"; ";メモ3") ;
[ "|;" ; "" ];[ "|" ; "" ]
)

Last edited by Shin (2018-03-17 10:14:20)

Offline

#10 2018-03-19 10:17:00

MM
Member

Re: フィールドの文字列の結合について

Hiro様

ありがとうございます。
大変助かりました!

もしお時間がございましたら、
フィールド値が、「0」か「1」のどちらかのみという
関数はどちらかを書き換えたらよろしいのか教えて頂くことは可能でしょうか?

Offline

#11 2018-03-19 10:19:08

MM
Member

Re: フィールドの文字列の結合について

Shin様

ありがとうございます!
大変助かりました。
無事に出来ました!

Offline

#12 2018-03-19 10:37:52

チポ
Member

Re: フィールドの文字列の結合について

私のレスは
    Substitute (フィールド1 ; "1" ; メモ1 & " ; " ) &
    Substitute (フィールド2 ; "1" ; メモ2 & " ; " ) &
    Substitute (フィールド3 ; "1" ; メモ3 & " ; " )
として、その結果の最後に必ず「;」が付くからそれを取り除く。
と書いたつもりでしたが、、


> フィールド値が、「0」か「1」のどちらか
ならば、Case関数を使った方が簡単でしょう。
考え方は似たようなものですから出来るのでは。

Offline

#13 2018-03-19 11:34:51

Hiro
Member

Re: フィールドの文字列の結合について

#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

#14 2018-03-19 11:53:55

MM
Member

Re: フィールドの文字列の結合について

チポ様

ヒントをありがとうございます!
やってみます!

Offline

#15 2018-03-19 11:55:14

MM
Member

Re: フィールドの文字列の結合について

Hiro様

なるほど!
勉強になります。
ありがとうございます、とても助かりました!

Offline

Registered users online in this topic: 0, guests: 1
[Bot] claudebot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.009 seconds, 11 queries executed - Memory usage: 529.67 KiB (Peak: 550.21 KiB) ]