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

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

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

You are not logged in.

Announcement

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


#1 2018-03-14 16:58:14

とめ
Member

比較結果をハイライトで表示

いつもお世話になります。

FileMaker 15 Windows 7 です。

タイトルにありますとおり,データAとデータBとを比較し,
どの部分が違うかのハイライト(マーカ)を表示して分かりやすくしたいのですが,
可能でしょうか?

データA     データB
りんご赤いな  りんだ赤いな
あいうえお   あいうえおー

この場合,データAでは「ご」がハイライト,
データBでは「だ」と「-」がハイライトされる感じです。

検索したものをハイライトさせるのはできたのですが,比較となると思いつきません。
そもそもできないのでしょうか?

よろしくお願いいたします。

Offline

#2 2018-03-14 18:25:57

Shin
Member

Re: 比較結果をハイライトで表示

データA     データB
りんご赤いな  りんんだ赤いな
の時は、どの様にしますか。

Offline

#3 2018-03-14 18:59:48

とめ
Member

Re: 比較結果をハイライトで表示

Shinさま

コメントありがとうございます。

Shin wrote:

データA     データB
りんご赤いな  りんんだ赤いな
の時は、どの様にしますか。

データAは「ご」、
データBでは「んだ」として、

ハイライトになるのが好ましいです。

Offline

#4 2018-03-14 20:07:23

Hiro
Member

Re: 比較結果をハイライトで表示

・データA が、 りんご赤いな
・テータB が、 りんだ赤いなー
の時、
・結果(一覧リスト)
   りん赤いな
   りん赤いな
を得るループ計算式、(※同位置の1文字ごと比較)

Let([
   $txt1=データAフィールド;
   $txt2=データBフィールド;
   $n=Max(Length($txt1);Length($txt2));
   $i=0;
   $res1="";
   $res2="";
   $fnc=
      "Case($i=$n; List($res1;$res2);
         Let([
            $i=$i+1;
            #chr1=Middle($txt1;$i;1);
            #chr2=Middle($txt2;$i;1);
            #chr1=Choose(#chr1=#chr2;TextStyleAdd(#chr1;HighlightYellow); #chr1);
            #chr2=Choose(#chr2=#chr1;TextStyleAdd(#chr2;HighlightYellow); #chr2);
            $res1=$res1 & #chr1;
            $res2=$res2 & #chr2
         ]; Evaluate($fnc) )
      )"
];
   Evaluate($fnc)
)



====================
なお、後出し条件の
・データA が、 りんご赤いな
・テータB が。 りんんだ赤いな
の時、
・結果
   りん赤いな
   りんんだ赤いな
一覧を得る式の方はちょっと思いつきません。(※相違位置の不定文字列ごとの比較)

Offline

#5 2018-03-14 21:08:15

とめ
Member

Re: 比較結果をハイライトで表示

Hiroさま

コメントありがとうございます。

ファイルメーカーの中身をいじり出してから数年程度の経験ゆえ、
まず、計算式でもループができることに感動しています。
まずは解読ですが、失礼ながらコピペして、実験台に貼り付けたところ
マーカされたことを確認しました。

ありがとうございます。

文字確認なので、後出しの方が理想ではあります。

Offline

#6 2018-03-14 23:46:57

Hiro
Member

Re: 比較結果をハイライトで表示

後出し条件の
・データA が、 りんご赤いな
・テータB が、 りんんだ赤いな~
の時、
結果、
・データA 、 りん赤いな
・データB 、 りんんだ赤いな

※Filter関数を利用して共通文字を抽出せざるを得ないため、文字順が担保されません。
それをマスターに比較するため、データによっては正しい結果は得られません。


【データAの式】
Let([
   $txt1=データAフィールド;
   $txt2=データBフィールド;
   $com=Choose(Length($txt1)>Length($txt2); Filter($txt1;$txt2); Filter($txt2;$txt1));
   $i=0;
   $j=0;
   $res1="";
   $fnc=
      "Case($i=Length($txt1); $res1;
         Let([
            $i=$i+1;
            $j=$j+1;
            #chr=Middle($com;$i;1);
            #chr1=Middle($txt1;$j;1);
            #chr1=Choose(#chr=#chr1; Let([$i=$i-1];TextStyleAdd(#chr1;HighlightYellow)); #chr1);
            $res1=$res1 & #chr1
         ]; Evaluate($fnc) )
      )"
];
   Evaluate($fnc)
)


【データBの式】
Let([
   $txt1=データAフィールド;
   $txt2=データBフィールド;
   $com=Choose(Length($txt1)>Length($txt2); Filter($txt1;$txt2); Filter($txt2;$txt1));
   $i=0;
   $res2="";
   $fnc=
      "Case($i=Length($txt2); $res2;
         Let([
            $i=$i+1;
            $k=$k+1;
            #chr=Middle($com;$i;1);
            #chr2=Middle($txt2;$k;1);
            #chr2=Choose(#chr=#chr2; Let([$i=$i-1];TextStyleAdd(#chr2;HighlightYellow)); #chr2);
            $res2=$res2 & #chr2
         ]; Evaluate($fnc) )
      )"
];
   Evaluate($fnc)
)

Last edited by Hiro (2018-03-15 00:27:43)

Offline

#7 2018-03-15 09:29:23

Shin
Member

Re: 比較結果をハイライトで表示

その条件でしたら、FM では無理でしょう。ワードプロッセサーで、その様な機能がありますので、そちらで検討されれば。

Offline

#8 2018-03-15 09:54:30

とめ
Member

Re: 比較結果をハイライトで表示

まとめての返信ですみません。

Hiroさま

いろいろ考えてくださりありがとうございます。
データによって結果が変わってしまうのはまずいので,諦めます。。
ただ,この式自体はほかで使えそうなので,ほかで検討しようと思います。


Shinさま

ワードにそのような機能があることは知っていましたが,
もう少し手軽にできないかと提案があり今回に至りました。
でも,FileMakerでもできないものもあるということで,ほかを当たってみようと
思います。


お二人ともありがとうございました。

Offline

#9 2018-03-15 11:35:50

Hiro
Member

Re: 比較結果をハイライトで表示

「正規表現」を利用するとFMでも解決できるでしょう。
文章処理が多いのであれば、無料のプラグインもありますので、
「正規表現」プラグインの導入をお勧めします。

Offline

#10 2018-03-15 17:04:25

とめ
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.006 seconds, 10 queries executed - Memory usage: 576.43 KiB (Peak: 592.97 KiB) ]