投稿者 okigaru | 2015/09/12

BOMでソート

BOMを使ったカスタム関数です

BOMs ( N ; C )
//Nは00〜99とか00000〜99999
//Cは0の固定
Let ( [
#Z0 = Char ( 8203 ) ;
#Z1 = Char ( 65279 ) ; //8204や8205も良い
#num = N ;
#c = C + 1 ;
#Len = Length ( N ) ;
#mid = Middle ( #num ; #c ; 1 ) ;
#CC = Choose ( #mid ;
#Z0 & #Z0 & #Z0 & #Z0 ; //0000→0
#Z0 & #Z0 & #Z0 & #Z1 ; //0001→1
#Z0 & #Z0 & #Z1 & #Z0 ; //0010→2
#Z0 & #Z0 & #Z1 & #Z1 ; //0011→3
#Z0 & #Z1 & #Z0 & #Z0 ; //0100→4
#Z0 & #Z1 & #Z0 & #Z1 ; //0101→5
#Z0 & #Z1 & #Z1 & #Z0 ; //0110→6
#Z0 & #Z1 & #Z1 & #Z1 ; //0111→7
#Z1 & #Z0 & #Z0 & #Z0 ; //1000→8
#Z1 & #Z0 & #Z0 & #Z1 ) //1001→9
] ;
If ( #c < #Len ; #CC & BOMs ( N ; #c ) ; #CC )
)

動く原理は、Nに入れた「01」二進法に変換→「0000」「0001」→「00000001」→Char(8203)Char(8203)Char(8203)Char(8203)Char(8203)Char(8203)Char(8203)Char(8203)Char(65279)
このChar(8203)とChar(65279)は画面では見えない文字だけどソート出来る

値一覧の表示用に使うと綺麗に並ぶから素敵

元ネタ
http://bison.jp/filemaker/1236.html
素敵な情報をありがとうございますm(_ _)m

注意点
フィールドをUnicodeにするのを忘れずに
FMPv14だと問題があるらしいです

値一覧についての関連はこちら

広告

カテゴリー

%d人のブロガーが「いいね」をつけました。