見出し画像

【Adalo】数字の合計値の1の位の数字を取得するやり方が分からなくて困った話

(なぜこれを書いたか)
ボタンを押すとランダムに画面遷移をするアプリを作っていました。数字を2個入力してその合計値の1の位の数字に応じて特定の画面に遷移するという内容です。

合計値を出して、その1の位を取り出すにはどうしたらいいか瞬時には思いつきませんでした。1日考えて翌日には出来たのですが、Adaloの関数には大したものがないので使い方をまとめておこうと思い、ブログにしました。

本当にこれは自分用の備忘録です。他の人に読んでもらわなくても構わないのですが、書いておかないと同じようなアプリを作るとき戸惑いそうなので整理しておくことにしました。

1.こういう画面を作りたかった

先日簡単なアプリを作っていました。入力フォームがあってユーザーの名前と数字を2ヶ所入れてボタンを押します。すると数字の合計値の1の位の数に応じて特定の画面に遷移するという動きをします。

集計画面を作ったのですが、以下のようなイメージのものです。合計があってその隣に1の位の数字が表示されています。

①数字を合計するデータベースを作成
名前の他に数字が入るプロパティを4つ作りました。

②入力画面(フォーム)と結果表示画面
フォームから入力して次画面(List)にその結果を表示しました。

2.ボタンを押したときのActionの設定


フォームのボタンを押したときのアクションは以下のようになります。
①2つの数字をデータベース「合計」に転送する(Create)
②Updateで2つの数字の合計を求める
③Updateで数字の合計の1の位を取得する
④集計画面(List)に画面遷移する

(各Actionの説明)
②Updateで2つの数字を合計する

(各Actionの説明)
③合計値の1の位を取得する

ここで迷いました。Adaloのどの関数を使うと1の位の数字が取得できるのか分かりませんでした。1日考えてINT関数(整数部分の取り出し)を使えばできそうだと分かりました。
例:合計値 57 →1の位の7が欲しい
 →10で割って5.7にし、INT(5.7)=5と計算する。さらに10倍して5×10=50とし、もともとの合計値から引き算すると1の位が求められます。
1の位の数字=(合計値)- INT(合計値÷10)×10

Adaloに用意されている9個の関数

1の位の数字を求めるために以下のような設定にしました。

(各Actionの説明)
集計画面Listに遷移するためのLink設定

3.集計画面をカスタムリストで作成する

集計画面にカスタムリストを配置して「合計」データベースと紐づけます。
「合計値」は「合計DB」の合計から引っ張ってきます。

「1の位」は「合計」DBの「1の位」から引っ張ってきます。

以上のような設定をすることで数字を合計して、1の位の数字を取得することが出来ました。

4.画面遷移の設定方法

遷移する画面が例えば10個あったとして、それぞれをP0,P1・・・・・P8、P9としておきます。1の位の数字に基づいてその画面に遷移します。

(設定方法)
1.画面にインプットを設け、ここに「1の位」の数字を表示させます。
2.画面遷移Actionの追加
フォームのデータ入力ボタンを押したときにデータ入力のActionの他にさらに以下のActionを追加して画面遷移出来るようにします。

①Linkアクションで必ず最初の画面P0に遷移するように設定する。
②P0の画面でScreenActionでP1に遷移するようにLinkアクションを設定。
但し、「インプットの値が2以上の場合」という条件を付ける

③各画面で同じようにScreenActionで次の画面に次々に遷移するように設定
P1画面 インプット値が3以上の場合
p2画面 インプット値が4以上の場合・・・・

※Screen Actionは画面の外枠を選択するとActionの部分で設定できます。

5.その他

私はAdaloの他にたまにClickというNoCodeも使うのですが、用意されている関数がAdalと若干異なります。ClickにはFLOOR( )関数と言うのがあって、これを使っても1の位の数字が取得できます。

(FLOOR関数の使い方例)
FLOOR(17,2)=16
FLOOR関数は( )の中の右の数字(基数)の2の倍数のうち17以下で一番大きい整数を返します。

右の数字(基数)が1の場合は省略可能です。
FLOOR(17.3、1)→FLOOR(17.3)と表記できます。
→この場合17が返値です(1の倍数で17.3を超えない一番大きい整数は17だからです)

(FLOOR関数を使った1の位の取得例)
合計値-FLOOR(合計値/10)×10

まあ、要はINT関数と使い方はほぼ同じですね。
合計値-INT(合計値/10)×10

Adaloもたいした関数を持ってないのでいろいろ工夫しないと欲しい情報が得られないことがありますね。

(過去の投稿一覧)
https://note.com/mucho3/n/n632515d056d1


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