2025年6月17日火曜日

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

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

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

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

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

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

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


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


商品マスタの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

            )

        )

    )

)

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



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










0 件のコメント:

コメントを投稿

QRcodeを生成する(APIは使わない)

  FileMakerでQRcodeを生成してみます。 テーブルは1個 フィールドはこれだけ。 「えっ!QRcodeを生成するテーブルとデータテーブルを分けないの?」 はい、分けません。 だって、生成側の源泉になるのがグローバルフィールドですし、リレーションやポータルのオーバーヘ...