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

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

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

You are not logged in.

Announcement

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


#1 2019-07-21 19:24:42

kirari
Member

Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

ファイルメーカーの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太文字にしたいのです。
やりたいこと:検索フィールドにAAAAAと入れると、内容のフィールドでAAAAAの文字が太字で表示される。
下記にソースコードを書きました。検索はされますが、内容欄で文字が太くなりません。

何度か修正を行っています。ソースコードを変更しました。
また、ネットで検索もしましたが、わかりませんでした。アドバイスをいただけないでしょうか。
どうぞよろしくお願いいたします。

フィールド設定[タスク::がいよう]Substitute (TextStyleRemove ( TextSizeRemove ( TextColorRemove ( タスク::がいよう);40);太字) ;タスク::クイック検索|iPad ; TextStyleAdd(TextSize (TextColor(タスク::クイック検索|iPad ; RGB (255 ;0 ; 0));40 );太字) )

Last edited by kirari (2019-07-21 20:52:37)

Offline

#2 2019-07-22 08:50:04

Shin
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

Let (
target = "AAAAA" ;
Substitute ( フィールド ; target ; TextStyleAdd ( target ; 太字 ) )
)
のようにして見ては

Offline

#3 2019-07-22 08:55:32

koeda
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

挙げていただいたステップだけではわからないと思います。

フィールド設定を行なっていますが、たとえば検索結果の対象レコードが複数だったときはどういう処理をしていますか?
対象レコードのすべてについてフィールドを更新しないと内容欄の書式は変わらないと思います。

Offline

#4 2019-07-22 09:30:43

kirari
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

Shin様

Shin wrote:

Let (
target = "AAAAA" ;
Substitute ( フィールド ; target ; TextStyleAdd ( target ; 太字 ) )
)
のようにして見ては

太文字にすることができました。ありがとうございます。

Offline

#5 2019-07-22 09:35:40

kirari
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

koeda様

koeda wrote:

挙げていただいたステップだけではわからないと思います。

フィールド設定を行なっていますが、たとえば検索結果の対象レコードが複数だったときはどういう処理をしていますか?
対象レコードのすべてについてフィールドを更新しないと内容欄の書式は変わらないと思います。

ありがとうございます。データが1000件近くあり、Loop文で回そうと思っていますが、

Loop
Let ( target = "タスク::クイック検索|iPad" ;Substitute ( タスク::内容概要 ; タスク::クイック検索|iPad ; TextStyleAdd ( タスク::クイック検索|iPad ; 太字 ) ))
Exit Loop IF
End Loop

を書きましたが、動きません。

もしよろしければアドバイスいただけないでしょうか。

Offline

#6 2019-07-22 09:42:55

kirari
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

また、別のキーワードを検索する場合に
検索フィールドに残っているキーワード「AAAAA」を消すと、太字になったキーワードが元に戻る(元のフォントに戻る)にはどうしたらよろしいでしょうか。

Offline

#7 2019-07-22 09:59:44

koeda
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

Loopの使い方はスクリプトの基本なので、ヘルプの例をじっくりご覧になってマスターしてください。
https://fmhelp.filemaker.com/help/18/fm … /loop.html

あと、Let()は変数やフィールドに値を設定するための計算式を自在に記述できる関数ですが、
スクリプトの中に直接書くことはできません。
フィールド設定[ フィールド名 ; Let(....) ]
変数を設定[ $変数 ; Let(...) ]
のように使います。
https://fmhelp.filemaker.com/help/18/fm … 2Flet.html

Last edited by koeda (2019-07-22 10:00:59)

Offline

#8 2019-07-22 10:10:14

koeda
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

kirari wrote:

また、別のキーワードを検索する場合に
検索フィールドに残っているキーワード「AAAAA」を消すと、太字になったキーワードが元に戻る(元のフォントに戻る)にはどうしたらよろしいでしょうか。

やり方はいくつかあると思いますが、すぐに思いつく方法としては、
1)検索フィールドにスクリプトトリガを設定し、フィールドが""だったらタスク::がいようのフィールドの書式をRomoveするスクリプトを起動
2)「タスク::がいよう」フィールドに、検索フィールドが""だったら書式をRomoveした自身の値を再設定する、という計算式を設定する

とりあえず1)の方がわかりやすいですかね?

Offline

#9 2019-07-22 10:29:07

チポ
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

Loopしないでも、
フィールド内容の全置換
でいいのでは。

キーワードを消した後に、
必ず入力、検索を行うのなら、
その検索スクリプトで書式等消せばいいでしょう。

Offline

#10 2019-07-22 11:01:17

kirari
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

koeda様

アドバイスありがとうございます。

koeda wrote:

Loopの使い方はスクリプトの基本なので、ヘルプの例をじっくりご覧になってマスターしてください。
https://fmhelp.filemaker.com/help/18/fm … /loop.html

あと、Let()は変数やフィールドに値を設定するための計算式を自在に記述できる関数ですが、
スクリプトの中に直接書くことはできません。
フィールド設定[ フィールド名 ; Let(....) ]
変数を設定[ $変数 ; Let(...) ]
のように使います。
https://fmhelp.filemaker.com/help/18/fm … 2Flet.html

下記のコードを書いたのですが、最後のデータだけ、文字が太字になりました。
途中のデータも文字が変わるようにするにはWriteのような構文を入れないといけないのでしょうか。

Letのアドバイスありがとうごうございます。

Offline

#11 2019-07-22 11:07:43

kirari
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

コードは以下のコードです。

レコード/検索条件/ページへ移動[最初の ]
Loop
    フィールド設定[タスク::がいようLet (
target = "タスク::クイック検索|iPad" ;
Substitute ( タスク::内容概要 ; タスク::クイック検索|iPad ; TextStyleAdd ( タスク::クイック検索|iPad ; 太字 ) )
)]
レコード/検索条件/ページへ移動[次の;最後まで来たら終了:オン]
End Loop

Offline

#12 2019-07-22 11:10:28

Moz
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

検索のたびにレコードを書き換えるのは望ましくないので表示用に非保存の計算フィールドという手もあります。
この場合はスクリプトは不要です。

検索は元のフィールドに行えば検索時のパフォーマンスへの影響もそれほどないでしょう。
※表示のレイアウトがどうなるかですが長文をリスト表示ではないと期待して......

サンプル
http://bit.ly/2XXROas

Offline

#13 2019-07-22 11:13:50

kirari
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

チポ様

コメントありがとうございます。以下のコードを書きましたが、最後のデータだけ太字になりました。
Writeの書き出し構文が必要なのでしょうか。

チポ wrote:

Loopしないでも、
フィールド内容の全置換
でいいのでは。

フィールド内容の全置換[ダイアログあり:オン;タスク::がいよう;Let (
target = "タスク::クイック検索|iPad" ;
Substitute ( タスク::がいよう ; タスク::クイック検索|iPad ; TextStyleAdd ( タスク::クイック検索|iPad ; 太字 ) )
)

Offline

#14 2019-07-22 11:17:57

チポ
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

> タスク::クイック検索|iPad
このフィールドはグローバルフィールドでしょうか?
でなければ、検索前に選択されたレコードのみに値があることになりますが。

Offline

#15 2019-07-22 11:47:55

kirari
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

チポ様

コメントありがとうございます。
グローバルフィールドになっていませんでした。チェックを入れて検索したら、太字に変換できました。
ありがとうございます。

例えばですが、キーワードが複数あった場合はどのようにすればいいのでしょうか。

チポ wrote:

> タスク::クイック検索|iPad
このフィールドはグローバルフィールドでしょうか?
でなければ、検索前に選択されたレコードのみに値があることになりますが。

Offline

#16 2019-07-22 11:55:46

Shin
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

キーワードが数個程度でしたら、
Let (
target1 = "AAAAA" ;
target2 = "AAAAA" ;
Substitute ( フィールド ;[ target1 ; TextStyleAdd ( target1 ; 太字 ) };[ target2 ; TextStyleAdd ( target2 ; 太字 ) })
)
のようにすればいいです。数が多ければ、スクリプトで何回かloopさせるか、再帰式で行うことになるでしょう。

計算フィールドで表示させるのがいいと思いますよ。

Last edited by Shin (2019-07-22 11:57:01)

Offline

#17 2019-07-22 11:58:41

kirari
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

Moz様

コメントありがとうございます。サンプル確認させていただきました。
文字を入力し、該当した時に表示される文字のコードはファイルメーカーにもともとあるのでしょうか。
スプリクトのコードを拝見しましたが、すみません、私の勉強不足でわからなかったので
ご教示いただけると幸いです。

Moz wrote:

検索のたびにレコードを書き換えるのは望ましくないので表示用に非保存の計算フィールドという手もあります。
この場合はスクリプトは不要です。

検索は元のフィールドに行えば検索時のパフォーマンスへの影響もそれほどないでしょう。
※表示のレイアウトがどうなるかですが長文をリスト表示ではないと期待して......

サンプル
http://bit.ly/2XXROas

Offline

#18 2019-07-22 12:37:59

Moz
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

分かりづらかったようですみません。
太字にして色を付ける目的ではスクリプトを使用していません。
以下の計算式で太字、色付けを行っています。
※他の皆さんの書かれているものと大差ありません。

もちろん標準機能です。

Let ( [ 
	/* キーワードを変数にして参照を1回にする */
	~キーワード = gt_キーワード
] ; 
	Substitute ( TextFormatRemove ( 本文 ) ; 
	~キーワード ; TextColor ( TextStyleAdd ( ~キーワード ; 太字 ) ; RGB ( 255 ; 99 ; 0 ) )
	) // Sub
) // Let

スクリプトは検索を行っているだけです。無くても大丈夫です。

この手法の利点は太字・色付けの目的でレコードの書き換えを行わないことです。

訂正)改行入れなかったら式が見切れちゃいました。スンマセン。

Last edited by Moz (2019-07-22 12:41:39)

Offline

#19 2019-07-22 13:16:20

kirari
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

Shin様

ありがとうございます。やってみます。

Offline

#20 2019-07-22 13:24:15

kirari
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

Moz様

ありがとうございます。フィールドのコード、確認いたしました。
キーワードが複数出てきた場合、例えば、「人」+「藤原」というキーワードを入れた時、
両キーワードともに色は変えることができるのでしょうか。

Offline

#21 2019-07-22 13:35:02

チポ
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

その複数のキーワードはどのように入力されます?
  複数のフィールド
  一つの繰り返しフィールド
  一つのフィールドの改行テキスト
等考えられますが、、

それで、
and 検索か、or 検索をするんですよね?

その検索スクリプトはできますか?


FMではスクリプトコマンド一つ一つをスクリプトステップといいます。
(ソース)コードとは言いません。

Offline

#22 2019-07-22 13:38:39

Moz
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

複数キーワードへの対応はShinさんが示しているので応用しましょう。
追加で質問されている内容の回答はここまでの流れで出ていますから応用してまずはやってみては如何でしょう。

答えそのものを写しても他のケースが出た場合にまた対応できなくなってしまいます。

チポさんが書かれている複数キーワードの入力手法がどうなっているかも重要ですね。
※クイック検索ならスペースは AND になりますがそれでは色々前提が崩れてしまいます。

可能であれば抽象的な表現でなく具体的な目標を示されては如何でしょう?
複数キーワード以外にも検索対象のフィールドも複数あるとかを後出しされるとアドバイスが難しいと思いますよ。

Let 関数
https://fmhelp.filemaker.com/help/18/fm … p/let.html

Substitute 関数
https://fmhelp.filemaker.com/help/18/fm … itute.html

ところでバージョンや環境はどのようになっていますか?
FileMaker Pro Advanced ならばデータビューアで計算式のテストができます。

Last edited by Moz (2019-07-22 13:41:34)

Offline

#23 2019-07-22 13:42:58

kirari
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

チポ様

チポ wrote:

その複数のキーワードはどのように入力されます?
  複数のフィールド
  一つの繰り返しフィールド
  一つのフィールドの改行テキスト
等考えられますが、、

それで、
and 検索か、or 検索をするんですよね?

その検索スクリプトはできますか?


FMではスクリプトコマンド一つ一つをスクリプトステップといいます。
(ソース)コードとは言いません。

検索キーワードのフィールドにキーワードを1個もしくは複数入れて、1000以上あるフィールド(改行したテキスト)にあるキーワードの太字、色つけしたいのです。
and検索、or検索もやりたいのですが、どうやって手をつければいいのか困っています。

みなさんのアドバイスを元にやってみようと思います。

Last edited by kirari (2019-07-22 13:52:54)

Offline

#24 2019-07-22 13:54:10

Hiro
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

  • 主題質問の解法案は、Mozさん案に1票!
    (元データは加工せず、表示用計算フィールドで自動更新の代理表示
     

  • 追加質問の複数キーワードによる複合検索の場合、
    AND か OR かの結合条件指定が必須ですよ。

Last edited by Hiro (2019-07-22 14:00:14)

Offline

#25 2019-07-22 14:01:48

qb_dp
Member

Re: Filemakerの検索フィールドを設けてキーワードを検索し、検索されたキーワードを太字にしたい。

1000以上あるフィールド

レコードでなくてフィールドですか?
設計を見直した方が良さそうな.....

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 587.46 KiB (Peak: 624.37 KiB) ]