Help us understand the problem. What is going on with this article?

フィールド内改行問題について考える

More than 3 years have passed since last update.

FileMaker Advent Calendar 2015の4日目

フィールド内改行問題について考える

FileMakerを始めた頃、うっかりハマることが多いフィールド内改行問題について考えてみる

フィールド内改行問題とは?

こういうフィールドがあったとして
151204-01.png

フィールドにカーソルを入れたときに
151204-02.png
こうなるのが正しいのに
151204-03.png
こうなってしまう

それフィールド内改行問題が起きてますよ

フィールド内改行問題で一番困るのは?

データを書き出した時に困ります
151204-06.png
1行目がフィールド内改行問題が起きているレコード
見た目は同じに見えても、まったく違うデータになってしまっています
赤枠に囲われた0Bは文字であって文字ではない(ASCII制御文字)なので、通常は表示されないので気づきません

どうすればいい?

フィールド内改行問題を起こさないためには

  • フィールド内で改行キーを受け付けなければいい
  • もしフィールド内に改行が入ったら影響が無いように置換してあげればいい

対策:フィールド内で改行キーを受け付けなければいい

インスペクタで改行を許可しないフィールドで
151204-04.png
こうなっているのを
151204-05.png
こうすれば、フィールド内で改行されずに次のタブ順に設定されているレイアウトオブジェクトに遷移するので、改行は入りません
気を付けないといけないのはフィールドの値をコピペした場合、コピペした値に改行コードが入っていた場合はフィールド内改行問題が残ります
あくまでもユーザーのキー入力を抑止する機能でしかありません

対策:もしフィールド内に改行が入ったら影響が無いように置換してあげればいい

Substitute関数を使って改行コードを置換します

Substitute関数
目的
テキスト内にあるすべての検索テキストの文字列を、テキスト内で置換テキストに置換したテキスト文字列を返します。
構文
Substitute ( テキスト ; 検索テキスト ; 置換テキスト )

フィールドのオプションの「入力値の自動化」の「計算値」に

Substitute ( フィールド名 ; "¶" ; "" )

を設定してあげればいいでしょう
都度フィールド名を指定するのが面倒ならSelf関数を使えばコピペ対応できます

Self関数
目的
計算式が定義されているオブジェクトの内容を返します。
構文
Self

これを使って

Substitute ( フィールド名 ; "¶" ; "" )

の代わりに

Substitute ( Self ; "¶" ; "" )

とすると、どのフィールドでも同じ式で対応できます

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした