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

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

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

You are not logged in.

Announcement

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


#1 2017-08-07 12:26:25

フィールドの中に特定の文字があるかないか

フィールドの文字列の中に例えば ABC という文字が含まれているかどうかを判断する計算式はどう作ればいいでしょう。
FM13Proです。

Offline

#2 2017-08-07 12:40:47

Moz
Member

Re: フィールドの中に特定の文字があるかないか

PatternCount ( フィールド ; "ABC" )
Position ( フィールド ; "ABC" ; 1 ; 1 )
など。

PatternCount
http://www.filemaker.com/help/13/fmp/ja … 33.77.html

Position
http://www.filemaker.com/help/13/fmp/ja … 33.78.html

Offline

#3 2017-08-07 17:23:58

チポ
Member

Re: フィールドの中に特定の文字があるかないか

PattternCount
  Position
は大文字、小文字を区別しません。


  Filter関数
は区別します。

  IsEmpty ( Filter ( テスト ; "ABC" ) )
の真偽で判定出来ますね。

Offline

#4 2017-08-07 20:08:20

Hiro
Member

Re: フィールドの中に特定の文字があるかないか

Filter関数は文字列の判定には不向きなので、
Substitute関数を工夫して判別するとか、かな。

Offline

#5 2017-08-07 20:50:01

Re: フィールドの中に特定の文字があるかないか

みなさんありがとうございます。
どれもうまくいきません。
もう少し詳しくいいます。
Aというフィールドの文字列が”XYZABCDEF"であるとすると
Bというフィールドを”ABC”としたいわけです。
AフィールドにABCが含まれなければ、Bフィールドは空白というものです。
簡単かと思ったのですが、意外と難解で困っています。

Offline

#6 2017-08-07 21:14:20

Hiro
Member

Re: フィールドの中に特定の文字があるかないか

質問します。
・文字は完全一致(大小文字など)で区別するか、しないか、のどちらですか?
・「ABC」3字の文字列単位での含有判定ですか、「A,B,C」3文字個々での含有判定ですか、のどちらですか?
・「ABC」が2組以上含まれた場合には、結果は何を返しますか?

Last edited by Hiro (2017-08-07 22:07:32)

Offline

#7 2017-08-08 04:21:57

Moz
Member

Re: フィールドの中に特定の文字があるかないか

文字列ではなく文字の判定なのですね......失礼しました。

うまくいかないというのはどの部分がうまくいかないのですか?
もう少し具体的にいま何をやっていてどこで詰まっているのか詳しく書いてみては如何でしょう。

Offline

#8 2017-08-08 08:38:05

チポ
Member

Re: フィールドの中に特定の文字があるかないか

いや、文字列かも、
とすると
  Filter関数
ではダメですね。

として、
大文字・小文字を区別するのなら、HIroさんが書かれている
  Substitute関数
で「ABC」を他の文字に置き換えて判定するのがいいでしょうかね。

Offline

#9 2017-08-08 11:57:35

qb_dp
Member

Re: フィールドの中に特定の文字があるかないか

こんな感じでイケそうな...。

Let([
	¢target=”XYZABCDEF"
;	¢search="ABC"
;	¢val=Substitute ( ¢target ;  ¢search  ; ¶ & ¢search & ¶  )
;	¢Result=FilterValues ( ¢val ; ¢search )
];
¢Result
)

Offline

#10 2017-08-08 12:21:01

Hiro
Member

Re: フィールドの中に特定の文字があるかないか

スレ主さんの回答無いけど、
仮に、完全一致の文字列比較で、
・照合文字列のすべてを改行一覧で返すなら→#9qb_dpさん式
・照合キーワードの1文字列だけ返すなら、#9qb_dpさん式で、
      FilterValues ( ¢val ; ¢search ) → ( ¢search ; ¢val )

【補足訂正】
FilterValues結果は無用な末尾改行が付記されるので、
除去処理が必要でしたネ。
・FilterValues ( ¢search ; ¢val )
  ↓
・Substitute(FilterValues ( ¢search ; ¢val ); [¶;""])

Last edited by Hiro (2017-08-08 18:11:01)

Offline

#11 2017-08-08 21:14:52

Re: フィールドの中に特定の文字があるかないか

ありがとうございます。客先から送られてくる注文コードです。
注文コードは48項目のCSVに変換して受信しています。
その46項目の中の32文字の中に国を表すアルファベットが含まれています。
特定の国を判定したいわけです。
だいたいの項目は注文番号とか納期とかその1項目で1つ情報なのですが、この項目だけいろいろなコードが混在しているわけです。
何文字目がなんのデータであるかが規定されていればいいのですが、他のデータの桁数が固定されていないので、何文字目にくるかがわかりません。

Offline

#12 2017-08-08 22:18:23

Hiro
Member

Re: フィールドの中に特定の文字があるかないか

#6の質問項目に正確に答えてくれていないのは残念ですが、

#11のコメント内容から再度推論するに、
   ・第46項目内の32字の文字列内に指定国の文字列コード(1件)が含まれているを判別、
   ・含まれる時は、その文字列コードを代入、
   ・判別は大小文字などを区別しない曖昧照合、
と解釈したときの式例、

   Case(PatternCount("32字の文字列"; "指定国の文字列コード"); "指定国の文字列コード")

Offline

#13 2017-08-09 08:29:27

Re: フィールドの中に特定の文字があるかないか

ありがとうございます。
確かに32文字の文字列をPatternCountで判定すると期待どおりになるのですが、
この32文字の文字列は、フィールドに格納されているわけで、

Case(PatternCount(32字の文字列のフィールド名; "指定国の文字列コード"); "指定国の文字列コード")

とすると、うまくいきません。

Offline

#14 2017-08-09 08:45:35

Re: フィールドの中に特定の文字があるかないか

追記
32文字の文字列フィールドは、テキストフィールドです。
なぜ、うまくいかないのかわかりません。

Offline

#15 2017-08-09 08:48:20

Moz
Member

Re: フィールドの中に特定の文字があるかないか

( ꒪⌓꒪)ンナアホな......

#5 によれば計算式を設定するのはフィールドBで、
フィールドAが「32字の文字列のフィールド」ですよね?

期待通りの動きをしない際の「32字の文字列のフィールド」の値には "指定国の文字列コード" とやらは含まれているのでしょうか?

Offline

#16 2017-08-09 08:51:57

Re: フィールドの中に特定の文字があるかないか

わかりました。
国コードが全角英字でした。
気が付きませんでした。おはずかしい。
データに全角英字を使うなんて・・・・。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 529.5 KiB (Peak: 550.41 KiB) ]