4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-12-03

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 ; "¶" ; "" )

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

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?