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

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

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

You are not logged in.

Announcement

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


#1 2015-06-24 15:38:16

cybe
Member

値一覧に該当する文字列だけを抜き出したい

お世話になります。
win7、FM8を使用しています。


参照するテーブルAの店舗名フィールド
aaa店
bbb店
ccc店

テーブルBの備考フィールドに
aaa店6/23
6/23aaa店
6/23  bbb店

テーブルBの店舗フィールドに
aaa店
aaa店
bbb店

テーブルBの備考フィールドにテーブルAの店舗名フィールドのどれかと照合できた場合、
テーブルBの店舗名フィールドにその照合した文字列を抜き出したいです。

Offline

#2 2015-06-24 15:49:06

チポ
Member

Re: 値一覧に該当する文字列だけを抜き出したい

Filter関数
ValueListItems関数

で取り出せます。

FM13のヘルプですが、同じですからリンクしておきますね
http://www.filemaker.com/help/13/fmp/ja … tml#700914
http://www.filemaker.com/help/13/fmp/ja … tml#978076

Offline

#3 2015-06-25 14:38:09

cybe
Member

Re: 値一覧に該当する文字列だけを抜き出したい

テーブルAの店舗名フィールドで「店舗名」という名前の値一覧を作成しました。

テーブルBの店舗名フィールドに計算値自動入力で

Filter ( 備考 ;ValueListItems ( Get( ファイル名 ) ; "店舗名" ) )

として、「インポート中、入力値の自動化オプションを実行」にチェックを入れて
テキストデータをインポートしたのですが
値が返ってきません。

どこがおかしいのでしょうか?

Offline

#4 2015-06-25 15:10:04

チポ
Member

Re: 値一覧に該当する文字列だけを抜き出したい

設定に間違いはなさそうですよ。


試しに、
計算フィールドで
  ValueListItems ( Get( ファイル名 ) ; "店舗名" )
として、
正しくリストが得られているか見てみたらいかがでしょう。

Offline

#5 2015-06-25 16:15:32

cybe
Member

Re: 値一覧に該当する文字列だけを抜き出したい

ありがとうございます。入力違っている個所がありました。
値返ってきたのですが、

参照するテーブルAの店舗名フィールドに
aaa店
bbb_6店
ccc通り店

とすると、テーブルBの備考フィールドに

aaa店_6/1通常

とテキストが入ってきた時に
テーブルBの店舗名フィールドに

aaa店

ではなく、

aaa店_6通

となってしまい、値一覧の一文字でも合致したらその値が返ってきてしまうようなんですが
どうすればいいでしょうか。

Offline

#6 2015-06-26 09:00:00

チポ
Member

Re: 値一覧に該当する文字列だけを抜き出したい

ああ、そうでした。

Filterは一文字ずつ評価するのですからそうなりますね。

まったくの迂闊でした、申し訳有りません。



答えられるか分りませんが、、

結果は、
備考に含まれている店名を重複を含めてその元の順の通り
でなければダメなのですか?

Offline

#7 2015-06-26 10:59:26

cybe
Member

Re: 値一覧に該当する文字列だけを抜き出したい

インポートした順という事でしょうか?

あとあと、発送日でソートをかけるので
レコードごとその店舗名さえ抽出できればいいです。

何か良い方法はありますでしょうか?

Offline

#8 2015-06-26 11:32:57

チポ
Member

Re: 値一覧に該当する文字列だけを抜き出したい

備考を値一覧のリストの一つずつ
PatternCount
で判定し、同じ店名が有ればリストにする。


これの再帰式
Let ( [
$c = 0 ;
$l = ValueListItems ( Get ( ファイル名 ) ; "値一覧名" ) ;
$t = 備考 ;
$r = "" ;
$s = " Case ( $c = ValueCount ( $l ) + 1 ; $r ;
  Let (  [
  $c = $c + 1 ;
  $f = GetValue ( $l ; $c ) ;
  $r = List ( $r ; Case ( PatternCount ( $t ; $f ) ; $f ) ) ] ; Evaluate ( $s ) ) )" ] ;
Evaluate ( $s ) )


返る値は、値一覧のリストの順になり、
店名の重複は一つになります。


多分これでいいと思いますが・・

Offline

#9 2015-06-26 11:53:35

cybe
Member

Re: 値一覧に該当する文字列だけを抜き出したい

ありがとうございます。

再帰式は、テーブルBの店舗名フィールドの計算値自動入力のところに
入力すればいいのでしょうか?

Offline

#10 2015-06-26 13:06:08

チポ
Member

Re: 値一覧に該当する文字列だけを抜き出したい

そうですが、

後から編集することがないのでしたら、
計算フィールドでいいのでは。

Offline

#11 2015-06-26 14:26:02

cybe
Member

Re: 値一覧に該当する文字列だけを抜き出したい

計算フィールドにして、計算結果「テキスト」としたのですが
戻り値が全て"?"になってしまいました。
どこか設定が違っているのでしょうか?

Offline

#12 2015-06-26 15:04:10

チポ
Member

Re: 値一覧に該当する文字列だけを抜き出したい

$l = ValueListItems ( Get ( ファイル名 ) ; "値一覧名" )
この値一覧名は、実際の値一覧名を入力します。

$s = " Case ( $c = ValueCount ( $l ) + 1 ; $r
  + 1
は不要です。
有っても特に問題となりませんが、、


他はその通りで計算されるはずですよ。

Offline

#13 2015-06-26 15:48:15

cybe
Member

Re: 値一覧に該当する文字列だけを抜き出したい

テーブルAの店舗名フィールドで値一覧「店舗名」を作成し、
テーブルBの店舗名最終フィールドに下記の様に計算式を入れたのですが
合っていますでしょうか?

Let ( [
$c = 0 ;
$l = ValueListItems ( Get ( ファイル名 ) ; "店舗名" ) ;
$t = 備考 ;
$r = "" ;
$s = " Case ( $c = ValueCount ( $l ) + 1 ; $r ;
  Let (  [
  $c = $c + 1 ;
  $f = GetValue ( $l ; $c ) ;
  $r = List ( $r ; Case ( PatternCount ( $t ; $f ) ; $f ) ) ] ; Evaluate ( $s ) ) )" ] ;
Evaluate ( $s ) )

Offline

#14 2015-06-26 16:04:10

チポ
Member

Re: 値一覧に該当する文字列だけを抜き出したい

合っていますよ。

書かれた式のコピペで検証しましたが、正確に表示されています。

Offline

#15 2015-06-29 11:03:55

cybe
Member

Re: 値一覧に該当する文字列だけを抜き出したい

すいません。いろいろ試しているのですが、未だ"?"のままです…

Bテーブルの値一覧「店舗名」は
最初のフィールド値を使用で、値一覧の内容はすべてを含めるにしています。

1レコード目 AAA店
2レコード目 BBB店
3レコード目 CCC店

Aテーブルに「リスト」という計算フィールドを非保存で作成
ValueListItems ( Get ( ファイル名 ) ; "店舗名" )
「リスト」フィールドは

AAA店
BBB店
CCC店

となっているので値一覧作成までは問題なさそうです。

Aテーブルに「店舗名最終」という計算フィールドを作成、
索引設定:最小限、式内の全フィールドの値が空欄の時計算しないにチェックを入れ、
教えて頂いた計算式を入れてあります。

「備考」フィールドにAAA店と入力があるcsvデータをインポートしたのですが
"?"になってしまいます。
「備考」フィールドが空の時は「店舗名最終」も空なのですが
「備考」フィールドに何かしらデータが入ると「店舗名最終」は"?"になってしまうようです。
正確に表示されない原因は何か考えられますでしょうか?

Offline

#16 2015-06-29 11:46:32

チポ
Member

Re: 値一覧に該当する文字列だけを抜き出したい

備考フィールドのタイプの確認と、
手入力でテキストを入力してみたらいかがでしょう。

Offline

#17 2015-06-29 12:50:44

cybe
Member

Re: 値一覧に該当する文字列だけを抜き出したい

もし可能でしたら見て頂けませんでしょうか。

http://firestorage.jp/download/ac5b6edb … 7a071527f9

Offline

#18 2015-06-29 13:48:25

チポ
Member

Re: 値一覧に該当する文字列だけを抜き出したい

ごめんなさい、
ここではファイルのアップ・ダウンはしないことにしています。

試しに、

索引設定:最小限、式内の全フィールドの値が空欄の時計算しないにチェックを入れ

これを索引非保存にしてみたらいかがでしょう。

もし計算されたら、また元に戻してみてください。

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, 7 queries executed - Memory usage: 554.89 KiB (Peak: 575.8 KiB) ]