6 返信 最新の回答 日時: Jun 20, 2011 2:58 AM ユーザー:aiolin_1

    フィールドの最後の指定文字を削除する方法について

    aiolin_1

      タイトル

      フィールドの最後の指定文字を削除する方法について

      フォーラムに投稿

      テキストのフィールドのレコードの最後に「、」の文字があった時のみ削除するスクリプトを作成したいのですが、

      方法を教えて頂けないでしょうか。

      レコードの途中にある「、」は削除せずレコード最終部分のみで結構です。

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

        • 1. Re: フィールドの最後の指定文字を削除する方法について
          YODA

          aiolin さん、こんにちは。

          [フィールド内容の全置換]スクリプトステップで、「計算結果で置き換える」オプションを指定して、以下のような式を指定しておけばできると思います。

          Case ( Right ( テキストフィールド ; 1 ) = "、" ; Left ( テキストフィールド ; Length ( テキストフィールド ) - 1 ) ; テキストフィールド )

          • 2. Re: フィールドの最後の指定文字を削除する方法について
            aiolin_1

            YODAさま

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

            先の投稿で「レコードの途中にある、は・・・」と書きましたが、

            Xという計算フィールドに

            フィールドA & "、" & フィールドB & "、" & フィールドC

            という計算式を設定していました。

            フィールドCにレコードがなかった場合

            レコードA、レコードB、

            フィールドBとCにレコードがなかった場合

            レコードA、、

            となってしまうので見栄えが悪く、対処方法をご相談させて頂いたのですが、

            教えて頂いたスクリプトは計算フィールドでは作動しませんでした。

            恐らく計算フィールドで設定出来るのでしょうが、私には方法がわかりません。

            重ね重ね恐縮ですが、もしご存知でしたら教えて頂けますでしょうか。

            計算フィールドではないテキストフィールドでは、[フィールド内容の全置換]の前に[フィールドへ移動]スクリプトを設定したら無事に作動しました。

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

            • 3. Re: フィールドの最後の指定文字を削除する方法について
              YODA

              aiolin さん、こんにちは。

              先の計算式では一番最後が"、"の時に1文字削除するだけなので、「レコードA、、」の場合に、が1つ残ってしまいます。

              式が長くなりますが、フィールドA,B,Cが空欄かどうかを判定して、空欄でないフィールド値だけを"、"で接続する式が必要だと思います。

              スクリプトは不要であれば、フィールドXの式を以下のようにすれば良いと思います。

              Case ( 

              IsEmpty ( フィールドA )  and IsEmpty ( フィールドB )  and IsEmpty ( フィールドC ) ; "" ;

              IsEmpty ( フィールドA )  and IsEmpty ( フィールドB ) ; フィールドC ;

              IsEmpty ( フィールドA )  and IsEmpty ( フィールドC ) ; フィールドB ;

              IsEmpty ( フィールドB )  and IsEmpty ( フィールドC ) ; フィールドA ;

              IsEmpty ( フィールドA )  ; フィールドB & "、" & フィールドC ;

              IsEmpty ( フィールドB )  ; フィールドA & "、" & フィールドC ;

              IsEmpty ( フィールドC )  ; フィールドA & "、" & フィールドB ;

              フィールドA & "、" & フィールドB & "、" & フィールドC )

              この式だと、A,B,Cが全て空なら空欄、あとはデータが入っている場合は"、"で接続された文字列が求まります。

              • 4. Re: フィールドの最後の指定文字を削除する方法について
                aiolin_1

                YODAさま

                ご親切に本当にありがとうございました。

                問題なく設定出来ました。

                FileMakerの関数はいろいろなことが出来るのだと改めて痛感致しました。

                これからも地道に勉強したいと思います。

                ご助力、感謝致します。

                • 5. Re: フィールドの最後の指定文字を削除する方法について
                  Shin

                  let (

                  C = Substitute ( フィールドA & "、" & フィールドB & "、" & フィールドC ; "、、" ; "、" ) ;

                  Left ( C ; Length ( C ) - ( Right (C ; 1 ) = "、" ) )

                  )

                  という式でも、同じ結果になるでしょう。

                  考え方は、"、、" ができることを無視して、テキストを作ってしまい、その後でそれを "、" へ置き換えます。次に、最後の "、" を消去します。レコードA が空白でないことが前提ですが、これもありえるのでしたら、

                  let (

                  [

                  C = Substitute ( フィールドA & "、" & フィールドB & "、" & フィールドC ; "、、" ; "、" ) ;

                  C = Left ( C ; Length ( C ) - ( Right (C ; 1 ) = "、" ) ) ;

                  C = Right ( C ; Length ( C ) - ( Left (C ; 1 ) = "、" ) )

                  ] ;

                  C

                  )

                  などとすればいいでしょう。

                  • 6. Re: フィールドの最後の指定文字を削除する方法について
                    aiolin_1

                    Shinさま

                    ありがとうございます。

                    関数はいろいろな考え方があるのですね。

                    ご親切、感謝致します。