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

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

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

You are not logged in.

Announcement

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


#1 2016-08-18 14:31:06

FM11使用
Member

複数フィールドの文字色の一括変更

初めて投稿します。

複数フィールドの入力値の文字色を、一括で変更することはできますでしょうか。
File Maker Pro 11を使用している初心者です。

情報の変更箇所がわかるように、変数などを使って入力値に変更のあったフィールド内の文字色が赤くなるように設定しています(変更なしは黒)。
特定の人物が情報を印刷後、全ての入力値の文字を黒色に戻したいのですが、例えば、ボタン操作で一括変更できるのでしょうか。

かなりの数のフィールド、レコードを対象にしたいため、簡単にできる方法があれば、、と思っております。

どうぞよろしくお願いいたします。

Offline

#2 2016-08-18 14:52:17

Shin
Member

Re: 複数フィールドの文字色の一括変更

その設定を解除する様に仕組めば良いのですが、その設定の作り方によって変わるでしょうね。
その内容は?

Offline

#3 2016-08-18 16:08:46

FM11使用
Member

Re: 複数フィールドの文字色の一括変更

Shinさま

ありがとうございます。
設定の解除という選択肢があるのですね。

設定は、試行錯誤の末、下記で進めています。

●スクリプトトリガOnObjectEnter
変数を設定[$$入力前 ; Get ( アクティブフィールド内容 )]

●スクリプトトリガOnObjectExit
変数を設定[$変更後 ; 値:Get ( アクティブフィールド内容 )]
If [$$入力前 = $変更後]
  現在のスクリプト終了[]
Else
  計算結果を挿入[選択;TextColor ( Get ( アクティブフィールド内容 ) ; RGB ( 255 ; 0 ; 0 ) )]
End If

これを、対象フィールドすべてに一つ一つあてがっています。


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

Last edited by FM11使用 (2016-08-18 16:09:19)

Offline

#4 2016-08-18 16:23:22

scripter
Guest

Re: 複数フィールドの文字色の一括変更

CSVなどにエクスポートして、上書きでインポートすればクリアされます。

#5 2016-08-18 17:20:32

FM11使用
Member

Re: 複数フィールドの文字色の一括変更

scripter様

scripter wrote:

CSVなどにエクスポートして、上書きでインポートすればクリアされます。

ありがとうございます。

試みてみたのですが、MacとWindowsの両方で共有しているからか、文字化けしてしまいました。
ウムラウトなども混ざっているので、できればエクスポートすることなく文字色を変更できたらと思っております。

Offline

#6 2016-08-18 17:58:06

チポ
Member

Re: 複数フィールドの文字色の一括変更

ベタベタですが、、

それらのフィールド全てにタブ順を振っておいて、
Loopでフィールド一つずつ黒くしていくのはいかがでしょう

Offline

#7 2016-08-18 18:15:40

FM11使用
Member

Re: 複数フィールドの文字色の一括変更

チポ wrote:

それらのフィールド全てにタブ順を振っておいて、
Loopでフィールド一つずつ黒くしていくのはいかがでしょう


チポ様

ありがとうございます。
やはりLoopは候補にあがりますよね。。。

今ざっと数えたところ、80フィールド×50レコードくらいあったのですが、
ひとまずLoopでできるか試してみます。

Offline

#8 2016-08-18 18:28:57

チポ
Member

Re: 複数フィールドの文字色の一括変更

タブ順を振っておけば、
  次のフィールドへ移動
を繰り返せばいいですから、
フィールドがいくつあってもスクリプトステップは簡単です。

Loopを抜けることを考えなければなりませんね。


> 80フィールド×50レコードくらいあったのですが
処理はアッと言う間でしょう。

Offline

#9 2016-08-18 19:40:44

FM11使用
Member

Re: 複数フィールドの文字色の一括変更

チポ様
皆さま

Loopを抜けるために、目立たない場所に捨てフィールド(”完”)を作成して、
下記で作動するようになりました。
(ログも表示しているので、ついでに消すスクリプトを挿入しました。)

レコード/検索条件/ページへ移動[最初の]
Loop
  フィールドへ移動[選択/再生; フィールドA]
  Loop
   計算結果を挿入[選択; TextColor ( Get ( アクティブフィールド内容 ) ; RGB ( 0 ; 0 ; 0 ))]
   次のフィールドへ移動
  Exit Loop If [Get ( アクティブフィールド内容 ) = "完"]
  End Loop
  【ログを消すスクリプト実行】
  レコード/検索条件/ページへ移動[次の;最後まできたら終了]
End Loop

いかがでしょうか。。。

Offline

#10 2016-08-18 21:36:39

Shin
Member

Re: 複数フィールドの文字色の一括変更

Atribute というテキストフィールドを作っておきます。
各フィールドに、not IsEmpty ( FilterValues ( テーブル::Attribute ; "Field2" ) ) {"Field2" は、各フィールド名} を条件とした条件付き書式を設定しておきます。

各フィールドに、スクリプトトリガー OnObjectEnter で次のスクリプトを、スクリプト引数 : "OnObjectEnter" で呼び出し、スクリプトトリガー OnObjectExit で次のスクリプトを呼び出すように設定しておきます。

If [ Get ( スクリプト引数 ) = "OnObjectEnter" ]
   #OnEnter
   変数を設定 [ $$pre; 値:Get ( アクティブフィールド内容 ) ]
Else If [ $$pre = Get ( アクティブフィールド内容 ) ]
   変数を設定 [ $$pre; 値:"" ]
Else
   フィールド設定 [ テーブル::Attribute; Get ( アクティブフィールド名 ) & ¶ & テーブル::Attribute ]
   変数を設定 [ $$pre; 値:"" ]
End If

特定の人が印刷した後で、Attribute をクリアすれば、条件付き書式もリセットされます。
https://www.dropbox.com/s/49czr7jvvmsye … 7.zip?dl=0

この方法の難は、条件付き書式にフィールド毎に違う計算式が必要な所です。クリップボードの内容を編集するツールを使えば、その内容の以下の行の "Field2" の部分を書き換えるか、<Calculation> のタグの部分を追加するだけです。フィールドのコピーペーストかカットペーストの途中でこの作業を行えば比較的簡単に済みます。

<Calculation><![CDATA[ not IsEmpty ( FilterValues ( テーブル::Attribute ; "Field2" ) )]]></Calculation><RangeBegin></RangeBegin>

<FieldObj numOfReps="1" flags="32" inputMode="0" displayType="0" quickFind="1">
<Name>テーブル::Field2</Name>
<DDRInfo>
<Field name="Field2" id="3" repetition="1" maxRepetition="1" table="テーブル"/>
</DDRInfo>
</FieldObj>

クリップボードの内容を編集するツールは、
FMClipboardEdit_0.2.zip
http://filemaker-kou.seesaa.net/article/263596698.html
FMClipboardBroker
http://www.key-planning.co.jp/software/ … ardbroker/
で落としてください。

Offline

#11 2016-08-19 09:02:31

チポ
Member

Re: 複数フィールドの文字色の一括変更

> 捨てフィールド(”完”)を作成して
最初のフィールドに戻ったらLoopを抜けるとすればいいのでは。
捨てフィールド不要でしょう。


以前
  計算結果を挿入

  フィールド設定
で同じ計算をする
のをLoopで100,000回テストしたことがありました。

その結果は圧倒的にフィールド設定の方が早かった記憶があります。


TextColor
の設定を戻すのに
TextColorRemove関数
が有りますよ。

Offline

#12 2016-08-19 17:12:28

FM11使用
Member

Re: 複数フィールドの文字色の一括変更

チポ様
皆様

お返事遅くなりました。
チポ様、Shin様、ご助言ありがとうございます。
最終的に以下のスクリプトで組むことができました。


>レコード/検索条件/ページへ移動[最初の]
>Loop
>>フィールドへ移動[選択/再生;フィールドA]
>>変数を設定[$変更前;値:フィールドA]
>>Loop
>>>フィールド設定[TextColor ( Get ( アクティブフィールド内容 ) ; RGB ( 0 ; 0 ; 0 ))]
>>>次のフィールドへ移動
>>>Exit Loop If [Get ( アクティブフィールド内容 ) = $変更前]
>>End Loop
>>【ログを消すスクリプト実行】
>>レコード/検索条件/ページへ移動[次の;最後まできたら終了]
>End Loop


「最初のフィールドに戻ったらLoopを抜ける」設定方法がわからず、覚えたての変数を使用してみました。
(たぶん同じ値を入れることはないと思うので、、、)

このスクリプトができたことで、かなり使い勝手のよいシステムになりそうです。
また行き詰ってしまったら質問させてください。

ありがとうございました!

Offline

#13 2016-08-19 17:50:59

チポ
Member

Re: 複数フィールドの文字色の一括変更

Get ( アクティブフィールド名 )関数
が有りますヨ

ヘルプのリンクですFM14ですが、ほぼ同じです。
  http://www.filemaker.com/help/14/fmp/ja … html#88792

Offline

#14 2016-08-23 10:55:21

FM11使用
Member

Re: 複数フィールドの文字色の一括変更

投稿が遅くなりました。
チポ様ありがとうございます。

「Get(アクティブフィールド名)」を使用して、あれから何度か試してみたのですが、
どうしてもLoopから抜けることができません、、、

下記でおかしなところがありますでしょうか?
>レコード/検索条件/ページへ移動[最初の]
>Loop
>>フィールドへ移動[選択/再生;フィールドA]
>>Loop
>>>フィールド設定[TextColor ( Get ( アクティブフィールド内容 ) ; RGB ( 0 ; 0 ; 0 ))]
>>>次のフィールドへ移動
>>>Exit Loop If [Get ( アクティブフィールド名 ) = フィールドA]
>>End Loop
>>【ログを消すスクリプト実行】
>>レコード/検索条件/ページへ移動[次の;最後まできたら終了]
>End Loop

何度もすみません。
よろしくお願いいたします。

Offline

#15 2016-08-23 10:57:34

scripter
Guest

Re: 複数フィールドの文字色の一括変更

Exit Loop If [Get ( アクティブフィールド名 ) = "フィールドA"]
としないとフィールドAの内容をフィールド名と比べてしまう。

#16 2016-08-23 11:42:13

FM11使用
Member

Re: 複数フィールドの文字色の一括変更

scripter様


ありがとうございます。

>レコード/検索条件/ページへ移動[最初の]
>Loop
>>フィールドへ移動[選択/再生;フィールドA]
>>Loop
>>>フィールド設定[TextColor ( Get ( アクティブフィールド内容 ) ; RGB ( 0 ; 0 ; 0 ))]
>>>次のフィールドへ移動
>>>Exit Loop If [Get ( アクティブフィールド名 ) = "フィールドA"]
>>End Loop
>>【ログを消すスクリプト実行】
>>レコード/検索条件/ページへ移動[次の;最後まできたら終了]
>End Loop


こういうことですね!
こちらでやってみたのですが、フィールドAに戻ってもやはりLoopから抜けられません(T T)

ログを残していて、それを見る限りフィールドAには戻っており、後はLoopを抜けるだけなのですが。。。

Offline

#17 2016-08-23 13:14:51

チポ
Member

Re: 複数フィールドの文字色の一括変更

> "フィールドA"
これが実際のフィールド名になっていない
ぐらいしか考えられませんね。


データベースの管理からフィールド名をコピペしてみたらいかがでしょう。

Offline

#18 2016-08-23 14:44:57

FM11使用
Member

Re: 複数フィールドの文字色の一括変更

チポ様


原因がわかりました!

「フィールドA」にあたる部分が、「テーブル名::フィールドA」になっていたのが原因でした。
”フィールドへ移動”の指示のときに、上記の表示になっていたので、同じ表記だから~と考えてテーブル名から入力していました。。。

時間がかかりましたが、ようやくスクリプトを完成させることができました。
皆さまお助けいただき本当にありがとうございました!

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, 9 queries executed - Memory usage: 564.62 KiB (Peak: 585.52 KiB) ]