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

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

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

You are not logged in.

Announcement

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


#1 2021-11-20 14:53:13

Hero
Guest

if構文で特定の文字列を含む抽出

初心者です。お知恵を貸して下さい。

Aというフィールドに7つのレコードを作成し、それぞれに

いちご
りんご
みかん
いちご春
りんご
いちご春赤
   (空白)

と入力しています。

Bという計算フィールドを作成し、Aの内容から以下のように表示させたいと思っています。

A        B
いちご     果物
りんご     果物
みかん     果物
いちご春    春の果物
いちご春赤   春赤の果物
   (空白)     (空白)

Bを作成する際の式の書き方が分かりません。if構文かと推測していますが、後半の「春の果物」と「秋の果物」で苦戦しています。実際はもうすこしややこしく、「いちご」「みかん」等のには3文字〜5文字程度が入ります。『春』という文字だけを含む」場合はどうすれば良いでしょうか?

#2 2021-11-20 16:04:30

Shin
Member

Re: if構文で特定の文字列を含む抽出

Left ( A[1] ; Get ( 計算式繰り返し位置番号 ) + 2 )
という繰り返し計算フィールドを作り、A へ自己リレーションし、A で昇べきにソートしておきます。
B を計算フィールドにして、

Case ( 
	A = テーブル 2::A ; "果物" ;
	Substitute ( A ; テーブル 2::A ; "" ) & "の" & テーブル 2::B
)

とすればいいでしょう。

Last edited by Shin (2021-11-21 08:36:31)

Offline

#3 2021-11-21 08:36:11

Hero
Guest

Re: if構文で特定の文字列を含む抽出

すみません、やはり私の説明不足でした。

A        B
いちご     果物
りんご     果物
みかん     果物
いちご春    春の果物
いちご春赤   春赤の果物
   (空白)     (空白)

のようにしたいと書いたのですが、実際は

A        B
いちご     果物
りんご     果物
みかん     果物
いちご春    春
いちご春赤   春赤
   (空白)     (空白)

にしたいのです。文字列「春」だけを含む場合と、文字列「春赤」のどちらも含む場合の構文の書き方に苦労しています・・・

初歩的な質問だとは分かっているのですが・・・すみません

#4 2021-11-21 08:38:32

Shin
Member

Re: if構文で特定の文字列を含む抽出

Case ( 
	A = テーブル 2::A ; "果物" ;
	Substitute ( A ; テーブル 2::A ; "" ) 
)

Last edited by Shin (2021-11-21 08:40:43)

Offline

#5 2021-11-21 20:42:37

hero
Guest

Re: if構文で特定の文字列を含む抽出

ありがとうございます。ご教授頂いていて申し訳ないのですが、

caseを使って以下のように途中まで書いておりまして

Case(
A="いちご";"果物" or
A="りんご";"果物" or
A="みかん";"果物" or

この先を

A     B
いちご春    春
りんご春赤   春赤

という結果が得られるようにしたいのです。

この際、
A="春";"春"
A<"春";"春"
A="春赤";"春赤"
A<"春赤";"春赤"
等試しているのですが、"春赤"が返されることがなく、空白か"春"のみしか返されません。

厳密に「文字列『春』だけを含む」検索や、あるいは「右から一文字目が『春』あるいは『赤』」等の数式があるのか検索していますが、ヒットしません。

説明下手で申し訳ありません・・・

#6 2021-11-21 21:13:24

himadanee
Guest

Re: if構文で特定の文字列を含む抽出

orの所はセミコロンにしないとだめです。

文字列が含まれるかどうかは、演算記号では書けません。
PatternCountかPositionの関数を使います。
どっちを使うにしても、長い文字列の条件を先に書きます。Caseは条件を満たす値があればその先は判定しません。

#7 2021-11-21 22:23:27

Hiro
Member

Re: if構文で特定の文字列を含む抽出

#3で具体的に例示されている5種項目についてのみ絶対変換するだけで良いのなら、
式は、

Substitute( Aフィールド
   ; ["いちご";"果物"]
   ; ["りんご";"果物"]
   ; ["みかん";"果物"]
   ; ["果物春赤";"春赤"]
   ; ["果物春";"春"]
)

Offline

#8 2021-11-21 23:11:54

Hero
Guest

Re: if構文で特定の文字列を含む抽出

Hiro様

#3で具体的に例示されている5種項目についてのみ絶対変換するだけで良いのなら、
式は、

Substitute( Aフィールド
   ; ["いちご";"果物"]
   ; ["りんご";"果物"]
   ; ["みかん";"果物"]
   ; ["果物春赤";"春赤"]
   ; ["果物春";"春"]
)

について、後半の

   ; ["果物春赤";"春赤"]
   ; ["果物春";"春"]


の「果物」の部分が、たとえば「いちご」だったり「りんご」だったり「みかん」だったりして、絶対変換ではないのです・・・

#9 2021-11-21 23:26:12

Hiro
Member

Re: if構文で特定の文字列を含む抽出

>『の「果物」の部分が、たとえば「いちご」だったり「りんご」だったり「みかん」だったりして、絶対変換ではないのです・・・』

実際に式を試してみましたか? 質問事項は織り込み済ですよ。
式は前から順に精査判定してゆきます。その前半部で、「いちご」「りんご」「みかん」は「果物」に変換されていますよ!

Offline

#10 2021-11-22 07:01:18

himadanee
Guest

Re: if構文で特定の文字列を含む抽出

”果物”に変換するものは不定ってことでしょう。多分こういう意味かな。
Case (
PatternCount ( A ; "春赤" ) ; "春赤の" ;
PatternCount ( A ; "春" ) ; "春の"
)
&
Case ( not IsEmpty ( A ) ; "果物" )

空欄以外の場合に”果物”と入れるが、特定の文字列が含まれてれば、それに応じた形容詞をつける。

#11 2021-11-22 09:22:48

Shin
Member

Re: if構文で特定の文字列を含む抽出

上の例で、なし が無くて、なし春 があれば、なし春 と返されればいい、という事でしょうかね。それとも、春 を返す、ということでしょうか。
どちらにしても、その上部の単語が(果物名)が存在するかどうかを確認する必要がありますので、全レコードの集計か、リレーションでの照合は必要になるのでは。

Offline

#12 2021-11-22 09:38:26

himadanee
Guest

Re: if構文で特定の文字列を含む抽出

#10は、#3を見てなかったようです。形容詞じゃなくて全体の置換ですね...するとこうなる
Case (
PatternCount ( A ; "春赤" ) ; "春赤" ; //春赤が含まれれば春赤
PatternCount ( A ; "春" ) ; "春" ; //それ以外で、春が含まれれば春
not IsEmpty ( A ) ; "果物" // それ以外で、空欄でなければ果物
)

最初に「7つのレコード」とはっきり書いてるんで、例示されてる以外の値は出てこない、と解釈するのが自然ですが、それならHiroさんの式でもOK?
でもその時の例は#3で否定されてしまってるから微妙か。
そもそも春とか春赤も実際の値じゃなさそうですし。。。

#13 2021-11-22 10:05:12

チポ
Member

Re: if構文で特定の文字列を含む抽出

例が曖昧すぎて正確な回答が得られないのですよ。

7レコードのみなら手作業で入力すればいいでしょう。

> 「いちご」「みかん」等のには3文字〜5文字程度が入ります
「程度」と書かれていますからそれ以外もある可能性がありますよね。

> 後半の「春の果物」と「秋の果物」で苦戦しています
「春」のみではなさそうですし、、

それらの文字列の種類が数種の有限でしたら、
ベタベタ書いて行けばいいでしょうが、数10とか無限ではそれも無理ですよね。

もっと正確な規則性を書くべきでしょう。


Shinさんの方法は
  いちご
が有って
  いちご春
なら良さそうですが、
  いちご
のレコードがないとダメでしょう。

Last edited by チポ (2021-11-22 10:06:07)

Offline

#14 2021-11-22 11:39:02

Hero
Guest

Re: if構文で特定の文字列を含む抽出

>例が曖昧すぎて正確な回答が得られないのですよ。

すみません、まさにその通りでして、元ファイルでやりたいことを説明するのがややこしく、単純な例を使ったつもりが逆に曖昧な結果となってしまっていました。反省します。

結果的に、himadaneeさんのPatternCountを使って解決しました。皆様のお手を煩わせてすみませんでした。

#15 2021-11-22 12:06:49

Shin
Member

Re: if構文で特定の文字列を含む抽出

いちご が無くて、いちご春 があって、いちご春赤   だと、赤 になってしまいます。
条件が曖昧で、これ以上答えようがないかも。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 10 queries executed - Memory usage: 549.74 KiB (Peak: 570.28 KiB) ]