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

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

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

You are not logged in.

Announcement

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


#1 2016-06-23 16:59:24

フィールド内の一部の文字のみを置換する方法を教えて下さい

環境は FileMaker 10 Mac です。

下記の処理を行いたいのですが、フィールド内の一部の文字のみを置換する方法を教えていただけないでしょうか。

テーブル M1 に Text というフィールドがあります。

テーブル EDIT には EDIT1 と EDIT2 というフィールドがあります。


M1    Text
  <br>・相違点のみを変換する。
  <br>・一致点のみを変換する。

EDIT EDIT1     EDIT2
   <br>・相違点  違う部分
   <br>・一致点  同じ部分
   変換する    取り換える

結果
M1    Text
  違う部分のみを取り換える。
  同じ部分のみを取り換える。


EDIT テーブルを設けた理由は、置換する条件や内容が増えたり変わったりする可能性があり、スクリプト内に埋め込みたくなかったためです。

EDITテーブルを順次読み「対象レコードの絞り込み」で「M1::TEXT=EDIT::EDIT1」とし、次のステップで上記の処理を行うのではないかと考えたのですが、フィールド内の一部の文字のみを置換する方法がわかりません。


どうぞ、よろしくお願い申し上げます。

Offline

#2 2016-06-23 22:52:47

Shin
Member

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

例では、
Substitute ( Text ; ["相違点" ; "違う部分"];["一致点" ; "同じ部分"];["変換する" ; "取り換える"] )
という式で全置換すれば良いですね。
これを動的に動かすために、 M2  に「["相違点" ; "違う部分"]」 を返す計算フィールド M12 を作っておき、M1 と EDIT にいわゆる×リレーションを張り、
Evaluate ( "Substitute ( Text ; " & Substitute ( List ( EDIT::EDIT12 ) ; ¶ ; ";" ) & " )" )
という式にしておけば、良いでしょう。ただ、文字数に制限が有るので、置換項目数は有限です。
https://www.dropbox.com/s/k1vdjr5s8i4rv … 7.zip?dl=0
サンプルファイルは、全置換ではなく、計算フィールドに結果を表示させてあります。

または、上の同じ様な事を、1項目毎にloop を回しても良いかと思います。

Last edited by Shin (2016-06-24 08:47:27)

Offline

#3 2016-06-25 11:49:44

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

Shin 様

いつもありがとうございます。

前述のデータにて EDIT テーブルで下記のスクリプトを実行しました。

エラー処理[オン]
全レコードを表示
関連レコードへ移動 → M1
If [Get(最終エラー)=0]
  フィールド内容の全置換[M1::TEXT; Evaluate ( "Substitute ( Text ; " & Substitute ( List ( EDIT::EDIT12 ) ; ¶ ; ";" ) & " )" )
Enf if
全レコードを表示

すると何も起こりませんでした。
そこで、下記のデータに切り替えて同スクリプトを実行したところ、下記の結果になりました。


M1    Text
    あいうえお
    かあいうえおき
    あいたちつてと
    たちつてと
    たちつてとあ

EDIT    EDIT1    EDIT2    EDIT12(自動入力)
        あいうえお    なにぬねの    ["あいうえお" ; "なにぬねの"]
        たちつてと    はひふへほ    ["たちつてと" ; "はひふへほ"]

結果
M1    Text
    なにぬねの
    かあいうえおき
    あいたちつてと
    はひふへほ
    たちつてとあ


Text フィールドと全一致しないと置換されない理由は何でしょうか。
また、このスクリプトでは「<br>」などの文字が入ると動作しないのでしょうか。

教えていただいたサンプルファイルに「<br>」を入れても正しく Text_ フィールドは置換されています。

何か致命的な勘違いをしていそうです。

どうぞ、よろしくお願い申し上げます。

Offline

#4 2016-06-25 16:50:47

Shin
Member

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

そんな事はあり得ませんね。EDITデータの中に、改行等のコントロールコードが混じっていませんか。

Offline

#5 2016-06-26 10:27:28

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

Shin 様

改行等は入っていませんでした。

関連レコードへ移動の結果オプション「関連レコードのみを表示」のチェックを外し忘れていました。

しかし、結果は下記のようになりました。

結果
M1    Text
    なにぬねの
    ?
    ?
    はひふへほ
    ?

また、最初に示したデータでは何も動かないのは同じ状況でした。

お忙しいところ、申し訳ございません。
どうぞ、よろしくお願い申し上げます。

Offline

#6 2016-06-26 10:51:19

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

下記にアップしました。

https://www.dropbox.com/s/64qqt54wygfxk … 3.zip?dl=0

M1.fp7 EDIT.fp7 は「あいうえお」などのデータです。
M1_br.fp7 EDIT_br.fp7 は最初に示したデータです。

どうぞ、よろしくお願い申し上げます。

Offline

#7 2016-06-26 21:31:10

Shin
Member

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

> M1 と EDIT にいわゆる×リレーションを張り、
が出来ていません。

Offline

#8 2016-06-27 11:41:46

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

Shin 様

お手数をおかけし申し訳ございませんでした。

> M1 と EDIT にいわゆる×リレーションを張り、

「×」を見落としておりました。
正しく動くようになりました。

いつも、ありがとうございます。

Offline

#9 2016-06-27 13:21:20

Shin
Member

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

ちょっと考え方を変えたファイルへ変更しています。この方が実用的だと思います。

Offline

#10 2016-06-27 16:55:46

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

Shin 様

ありがとうございます。
dropbox へのリンクが見当たらないようです。
よろしくお願い申し上げます。

Offline

#11 2016-06-27 19:40:26

Shin
Member

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

Offline

#12 2016-06-28 17:02:18

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

Shin 様

EDIT-有効 に「有効」を自動入力
M1-有効(グローバル格納)に「=」でリレーション

ということだと思うのですが、同じ設定をしてみたところスクリプトが機能しなくなりました。

EDIT-有効 のレイアウトに □に× のチェックボックス?の表示が出ていないことに関係あるのかと思いますが、理由がわかりません。

また、この方法の利点(実用的)はどういったポイントなのかご教示いただければ幸いです。

どうぞ、よろしくお願い申し上げます。

Offline

#13 2016-06-28 17:53:09

Shin
Member

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

M1側にも値を設定していますか。
有効、のチェックが入っている所だけ、変換条件として生きる事になります。サンプルの中で、チェックを付け外ししてみられるとよくわかると思いますが。
その時点で、EDITテーブルのレコードを書き換える事無く、追加を行い、除外条件を外しておくだけで、置換設定が変化する、という意味です。

Offline

#14 2016-06-28 19:13:25

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

Shin 様

>> M1側にも値を設定していますか。

M1側の データの格納 グローバル格納 にチェックをする以外に何か値を設定するのでしょうか。
https://www.dropbox.com/s/jaz29hjtoj0at … 3.zip?dl=0

Offline

#15 2016-06-28 20:57:07

Shin
Member

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

有効、という値を設定しないと、リレーションが動きません。

Offline

#16 2016-06-29 13:37:59

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

Shin 様

正しく動くようになりました。
レイアウトでこのような機能を追加できるのは便利ですね。

ファイルメーカーを使い込んでらっしゃるようで尊敬します。

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

Offline

#17 2021-10-18 12:33:44

Shimeji33
Guest

Re: フィールド内の一部の文字のみを置換する方法を教えて下さい

フィールド内を改行コードを付与してList表示させていますが、改行のみの空白行のみを削除するにはどうしたらよろしいのでしょうか?

FM Pro15、Windows 10 環境です。

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: 597.91 KiB (Peak: 614.82 KiB) ]