見出し画像

その大小比較、ほんまか?回避の仕込み


こんにちは。おじゃがです。

FileMakerをがっつり触りだしてもうすぐ3年が経とうとしているおじゃがです。いつもは自分の備忘録で、書きなぐりな記事が多いんですが。
今日はtyuma氏がやってる、advent-calendarに参加してみようって事で。
このあいだ心に決めた大小比較の手前処理のお話を。

比較前にGetAsNumber

いきなり答えです。
GetAsNumberは、戻り値の型を「数字」にしてくれるからです。

最近のバージョンでよく使うjsonなわけですが、JsonSetElementをする時につい端折って全部「1」「JSONString」にしてしまう人はいませんか?

うちにはいるんですね~w 最初の頃の私かもしれません(

jsonSetElement タイプ1(JSONString)を見てみよう

10が "10" となっていますね! Stringなの!
set値には""入れていないけど、タイプ指定を1にしてしまっているから!

比較の式を入れてみる。

2よりデカいつもりが小さい(テキスト10と数字2の比較だから!)

ちゃんとNumber(2)にしてみる

望んだ答え!

とまあ、ちゃんとしてれば問題ないんです。
そう。元をちゃんと正せばいいんです。いい子はきっとそうする。
だが誰かがコピペで変えちゃうかもしれん。怖い!!!

ひと手間で安心を買う

望んだ答え!

フィールドも怪しむ

同じように、テキストフィールドに数字が入ってても
設定がテキストならこうなるわけで。当たり前だけど。
スクリプトの時も変数設定で "" 入れるとテキストです!

テストの時は1桁とかで気づかない事も多い。
最初は1桁だったけど、2桁になっちゃったとか。
その時にわけがわからずボカンとなる。

というわけで、元を正さないのはよくない手かもしれませんが。
何代も継いできたappの場合、念のためやっといた方がいいんではってお話でした。

他にもひっかかりそうなの!

LeftやRightでとった数字!
GetValueでとった数字!
filterでとった数字!

などなど、ヘルプで戻り値のデータタイプがテキストのものは
比較する際に注意が必要って事ですね。

おまけ 指数になっちゃう長い数字

長い数字を入れて出すと指数に・・・って事もありまして。
テキストでセットするわけで。

v19.6.3で確認 18桁まで

18桁は普通に数字
19桁目で指数
テキストで仕込んで指数になるのを防止
GetAsNumberしても指数になるわけじゃないので、やっててOK!
JSEで指数となるのか、JGEで指数なるのかは不明だが、JLVでとっても指数だった。
ググって指数を戻すには?とNumToJTextを使ってみたが上手に戻らず・・・
どなたかさらりと戻す方法があれば教えて欲しい・・・

最後に

すっかり年の瀬です。
先日、沖縄で開催されたビジネスITフェスに行ってきました。
新しい話を聞くと色々刺激されるので、楽しかったです。
一人で考えたり勉強するのもいいけれど、角度の違う意見を聞けたり、そもそもの考え方を聞けたりで、やっぱりいいなと思いました。

最終的には同じ答えでも、やり方によって正確性やスピード、安全性が違うわけで。選択の幅も広がります。

私も普段はミンキー(FileMaker ミンキーで検索!)や友達の天才猫。
会社の子やXなど、人との会話の中でたくさん気づけたりしています。

是非是非お気軽に。お声がけくださいませ。

この記事が気に入ったらサポートをしてみませんか?