2025年6月17日火曜日

JT00000001を「JTスぺ-ス1とかで検索したい!」という人のために


「JTスぺ-ス1とかで検索したい!」

とかいう人のために。

--------------------------------------------------------------

計算フィールの結果(テキスト)

J
JT
JT0
JT00
JT000
JT0000
JT00000
JT000000
JT0000000
JT00000001


T
T0
T00
T000
T0000
T00000
T000000
T0000000
T00000001


0
00
000
0000
00000
000000
0000000
00000001


0
00
000
0000
00000
000000
0000001


0
00
000
0000
00000
000001


0
00
000
0000
00001


0
00
000
0001


0
00
001


0
01


1


-----------------------------------------------

計算式フィールドの中身


AllSubstrings ( 商品No )


(テキスト)非保存にしないでねw

-------------------------------------------------

「ホレ、なんもかんもバラバラにしちゃいなさいや!」というカスタム関数を3つ作るのさ。

なんもだから・・・


-----①関数------

関数名:AllSubstrings
引数:str


/*----------------------------------------------------------*/

Let (

  [

    len = Length ( str )

  ] ;


  If ( len = 0 ; "" ;

    SubstringFrom ( str ; 1 ) & ¶ & AllSubstrings ( Middle ( str ; 2 ; len - 1 ) )

  )

)


/*---------------------------*/




-----②関数----再起処理-----

関数名:SubstringFrom
引数:str;start;


/*----------------------------------------------------------*/

If ( start > Length ( str ) ; "" ;

  Let (

    [

      acc = ""

    ] ;


    Let (

      [

        end = Length ( str ) ;

        result = RecursiveJoin ( str ; start ; start )

      ] ;


      result

    )

  )

)


/*---------------------------*/




-----③関数------

関数名:RecursiveJoin
引数:str;start;current


/*----------------------------------------------------------*/

If ( current > Length ( str ) ; "" ;

  Left ( str ; current ) & ¶ & RecursiveJoin ( str ; start ; current + 1 )

)

/*---------------------------*/


わやだぁ












コード番号のあいまい検索 カスタム関数作るべさ。

 凄く長く放置してました。3年放置?

FileMaker止めてたわけじゃないんですよ。以前みたいにマメじゃなくなっただけです。

そう!長野に移住したんです。

理由は、夏が暑くなったから!これしかない

マックスのお散歩でアスファルト47℃とかさ、もーおかしいでしょ東京。
それで八ヶ岳の麓の標高800mの町にフルリフォームの家に住んでます。
土地合わせて300㎡だよ。ワンワン走り回ってます。
仕事はそのまま東京の某会社の下請け侍やってます。
実家の帯広に帰れよ!って話なんだけど、ほら蛍飛んでるし、こっち。

足りなくなったんでどなたか仕事ください。


で、本題。
なんか最近同じような開発案件が続いたんでカスタム関数にするべ!と思って
作っちゃいました。


商品マスタのCDとかで「NB00000001」とか、え?まだそんな感じなんだっていうのあるでしょ?

それでこれをあいまい検索できるようにして!とか依頼来るんですよ。
ゼロ何回も打ってられないので、商品CDとは別に計算フィールドを作ります。


1
01
001
0001
00001
000001
0000001
00000001
B00000001
NB00000001

テキスト改行の計算式を作るわけ。
よくやってたじゃないですか昔・・・左から・・・

外人さんの名前とか便利だったし。

でも、今回のはCDなので右端から改行させます。



関数名:IncrementFromRight(なんでもいいんだけど)
引数:str


/*------------------------中身------------------------*/


Let ( [

    len = Length ( str )

] ;


    If ( len = 0 ;

        "" ;

        Let ( [

            part = Right ( str ; len ) ;

            rest = IncrementFromRight ( Right ( str ; len - 1 ) )

        ] ;

            Case (

                IsEmpty ( rest ) ; part ;

                rest & ¶ & part

            )

        )

    )

)



/*----------------------------------*/


で、検索 

1でも

01でも

001でも

ヒットしますよーって話。




ちなみに左は

関数名:IncrementFromLeft

引数:str

/*-----------------------------------------------*/


Let ( [

    len = Length ( str )

] ;

    If ( len = 0 ;

        "" ;

        Let ( [

            part = Left ( str ; len ) ;

            rest = IncrementFromLeft ( Left ( str ; len - 1 ) )

        ] ;

            Case (

                IsEmpty ( rest ) ; part ;

                rest & ¶ & part

            )

        )

    )

)

/*----------------------------------*/



名前とかに使用するといいよね。










JT00000001を「JTスぺ-ス1とかで検索したい!」という人のために

「JTスぺ-ス1とかで検索したい!」 とかいう人のために。 -------------------------------------------------------------- 計算フィールの結果(テキスト) J JT JT0 JT00 JT000 JT0000 JT00...