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

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

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

You are not logged in.

Announcement

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


#1 2014-02-13 00:28:56

nego
Member

フィールド内のテキストを分解・結合したい

FM pro12、win7 です。

フィールドAに次のようなテキストが入っています。

[トヨタ]アクア/プリウス[ニッサン]ノート/キューブ/シルビア[ホンダ]フィット/ステップワゴン[トヨタ]アルファード/エスティマ[ホンダ]CR-V


これを、同じ車メーカー毎にまとめて下記のようにしたいです。

[トヨタ]アクア/プリウス/アルファード/エスティマ[ニッサン]ノート/キューブ/シルビア[ホンダ]フィット/ステップワゴン/CR-V


フィールドAには同じ車メーカーが3個や4個ある場合もあります。
車種名はフィールドA内で重複することはありません。


よい方法が思い浮かびません。
ご教示お願いいたします。

Offline

#2 2014-02-13 05:07:30

Hiro
Member

Re: フィールド内のテキストを分解・結合したい

結構面倒な式ですが、3連動の再帰計算式から一発で求める例、

Let([
  $lst=Substitute(フィールドA; "[";"¶[");
  $lst=Right($lst;Length($lst)-1);
  $res="";
  //▼メイン再帰関数を定義
  $fnc="Case(
    IsEmpty($lst); $res;
    Let([
      $res=List($res; Let([$j=0;$key=GetValue($lst;1);$key=GetValue(Substitute($key;\"]\";\"]\¶\");1);$res1=\"\"];Evaluate($sub1)));
      $lst=Let([$lst_a=$lst;$lst_b=$res1;$k=0;$res2=\"\"];Evaluate($sub2))
    ]; Evaluate($fnc))
  )";
  //▼サブ1再帰関数を定義
  $sub1="Case(
    $j=ValueCount($lst); $add;
    Let([
      $j=$j+1;
      $row1=GetValue($lst;$j); $row1=Case(PatternCount($row1;$key); $row1);
      $res1=List($res1; $row1);
      $add=Substitute($res1;\¶&$key;\"/\")
    ]; Evaluate($sub1))
  )";
  //▼サブ2再帰関数を定義
  $sub2="Case(
    $k=ValueCount($lst_a); $res2;
    Let([
      $k=$k+1;
      $row2=GetValue($lst_a;$k); $row2=Case(IsEmpty(FilterValues($row2;$lst_b)); $row2);
      $res2=List($res2;$row2)
    ]; Evaluate($sub2))
  )"
];
  Substitute(Evaluate($fnc); ¶; "")
)

Offline

#3 2014-02-13 22:26:39

nego
Member

Re: フィールド内のテキストを分解・結合したい

Hiroさん
ありがとうございます!

複雑でまだ理解できていませんが、じっくり試したいと思います。

ちなみに・・・

フィールドA は計算フィールドで、テキスト内容は他のテーブルの複数フィールドのテキストを結合しています。
その各フィールド内で [車メーカー名] は重複しません。

最初の例でいうと、下記のようになります。

ほかのテーブルのフィールドB の内容
[トヨタ]アクア/プリウス[ニッサン]ノート/キューブ/シルビア[ホンダ]フィット/ステップワゴン

ほかのテーブルのフィールドC の内容
[トヨタ]アルファード/エスティマ[ホンダ]CR-V


この状態から計算するほうが簡単に済んだりするのでしょうか。

Offline

#4 2014-02-13 22:37:24

ゆい
Guest

Re: フィールド内のテキストを分解・結合したい

それも計算フィールドだったりしませんか?
車の重複はなし?

#5 2014-02-13 22:42:38

nego
Member

Re: フィールド内のテキストを分解・結合したい

ゆいさん
他のテーブルのフィールドは計算ではありません。
今までエクセルで管理していたのをインポートしたデータです。

車の重複は無いとも限りませんが、重複することはごく稀なのであまり気にしなくてもよいレベルです。

Offline

#6 2014-02-14 01:12:42

Hiro
Member

Re: フィールド内のテキストを分解・結合したい

> #3 この状態から計算するほうが簡単に済んだりするのでしょうか。
同じことでしょう。DB構成が変わらないのだから。

Offline

#7 2014-02-14 12:15:19

nego
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.005 seconds, 9 queries executed - Memory usage: 518.22 KiB (Peak: 522.76 KiB) ]