前回は、一つの識別子で文字列を取得しましたが、今回は識別子が曖昧なケースの対応です。
テーブルやフィールド構成は、前回と同様です。
フィールド名 | タイプ |
---|---|
本文 | テキスト |
名前 | 計算 |
違うところは、レコードによって、識別子が微妙に違うところです。
(その1)
お申し込みありがとうございます。
以下の内容で承りました。
[お名前] なんとか かんとか
[生年月日] 2000/1/1
(その2)
お申し込みありがとうございます。
以下の内容で承りました。
[名前] なんとか かんとか
[生年月日] 2000/1/1
モヤモヤっと叫びたくなりますが、FileMakerユーザのシステムにはよくあることなので、気持ちを落ち着かせて対応します。
技術者として色々コードを短縮化したいと思うのですが、ユーザがメンテナンスをすることを考え、冗長ですが一般人にもわかりやすく実装してみました。
Let (
[
moji1% = "[お名前]" ;
pos_start1% = Position ( 本文 ; moji1% ; 1 ; 1 ) ;
moji_cnt1% = Length ( moji1% ) ;
pos_end1% = Position ( 本文 ; "¶" ; pos_start1% ; 1 ) - 1 ;
moji2% = "[名前]" ;
pos_start2% = Position ( 本文 ; moji2% ; 1 ; 1 ) ;
moji_cnt2% = Length ( moji2% ) ;
pos_end2% = Position ( 本文 ; "¶" ; pos_start2% ; 1 ) - 1 ;
] ;
Case(
pos_start1% ≠ 0 ; Middle ( 本文 ; pos_start1% + moji_cnt1% ; pos_end1% - ( pos_start1% + moji_cnt1% ) + 1 ) ;
pos_start2% ≠ 0 ; Middle ( 本文 ; pos_start2% + moji_cnt2% ; pos_end2% - ( pos_start2% + moji_cnt2% ) + 1 ) ;
""
)
)
前回のは一つの識別子対応でしたが、今回のような複数の識別子も考慮するケースならば、一つの識別子のところも同様のフォーマットで修正して実装してあげるのがメンテナンスしやすいと思います。
ではでは。