この記事では、編集テーブル内のデータ入力アイテムに、エブリサイト内の他アイテムの値を参照した計算結果をセットする方法を紹介します。


完成イメージ

編集テーブルに、数値入力アイテム:A・B・D、テーブル外に数値入力アイテム:Cを設定します。

Bには「A×10」、Dには「B+C」の計算結果をそれぞれセットします。


画面デザインイメージ


設定の流れ

  1. 画面デザインを設定する:ウィジェット「編集テーブル

  2. 画面デザインを設定する:ウィジェット「シンプルパネル

  3. ページ内処理を設定する:テーブル内アイテム(A)を編集したときの設定

  4. ページ内処理を設定する:テーブル外アイテム(C)を編集したときの設定


設定の詳細

*今回の設定に関係しない項目についての説明は割愛します。

1.画面デザインを設定する:ウィジェット「編集テーブル」

ウィジェット「編集テーブル」設定

列になるアイテム

数値入力(3つ追加)

[列になるアイテム]数値入力:パラメーター設定(1つ目)

アイテムID

A

アイテム名

A

アイテム名を表示しない

☑を入れます

[列になるアイテム]数値入力:パラメーター設定(2つ目)

アイテムID

B

アイテム名

B

アイテム名を表示しない

☑を入れます

編集不可にする

☑を入れます

※計算結果をセットするため

[列になるアイテム]数値入力:パラメーター設定(3つ目)

アイテムID

D

アイテム名

D

アイテム名を表示しない

☑を入れます

編集不可にする

☑を入れます

※計算結果をセットするため


2.画面デザインを設定する:ウィジェット「シンプルパネル」

ウィジェット「シンプルパネル」設定

アイテム

数値入力

数値入力:パラメーター設定

アイテムID

C

アイテム名

C


3.ページ内処理を設定する:テーブル内アイテム(A)を編集した時の設定

テーブル内アイテム(A)を編集した時と、テーブル外アイテム(C)を編集した時では、必要な設定が異なります。

まずは、テーブル内アイテム(A)を編集した時の設定を行います。各入力アイテムに値がある時/空の時に応じて、アクションを分岐します。


3-1.Aの変更を検知する

 やること「なにもしない 」

※後続のアクションで、Aに値が入っている時/Aに値が入っていない時のアクションをそれぞれ設定しますので、ここでは「なにもしない」を選択します。

 条件「入力アイテムを編集して値が変わった時


3-2.Aに値がある時:Bに計算結果をセットする

 やること「入力アイテムの値をセットする

  値「=A*10」

 条件「他のアクションの実行が完了した時

 追加条件「文字列が条件を満たすならば


3-3.Cにも値がある時:Dに計算結果をセットする

 やること「入力アイテムの値をセットする

  値「=B+C」

 条件「他のアクションの実行が完了した時

 追加条件「文字列が条件を満たすならば


3-4.Aが空の時:BとDの値をクリアする

 やること「「入力アイテムの値をまとめてセットする」」

  マッピング

   「=””」(セット先アイテムID:B)

   「=””」(セット先アイテムID:D)

※BとDに値が入っている場合、値をクリアするために「=””」と入力します。

 追加条件「文字列が条件を満たすならば


4.ページ内処理を設定する:テーブル外アイテム(C)を編集したときの設定

続いて、テーブル外アイテム(C)を編集した時の設定を行います。3.同様に、各入力アイテムに値がある時/空の時に応じて、アクションを分岐します。

さらに、テーブル内の入力アイテムに値があるかどうかでアクションが分岐します。


4-1.Cの変更を検知する

 やること「なにもしない 」

※後続のアクションで、Cに値が入っている時/Cに値が入っていない時のアクションをそれぞれ設定しますので、ここでは「なにもしない」を選択します。

 条件「入力アイテムを編集して値が変わった時


4-2.テーブルからデータを1行ずつ取り出す(ループ開始)

 やること「テーブルやリストウィジェットから行を取り出す

  テーブル「widget1(1で設定したウィジェット)」

  取り出すアイテム「B」

 条件「いずれかのアクションの実行が完了した時

  アクション「7,9,10,11」

※この時点ではまだ9〜11のアクションが存在しないため、まずは「7」だけを選択して進めてください。すべての設定が終わった後、最後にここに戻って「9, 10, 11」にチェックを入れます。


4-3.CとBに値がある時:Dに計算結果をセットする

 やること「入力アイテムの値をセットする

  値「=$8.B+C」

 条件「リストから要素を取り出した時

 追加条件1「文字列が条件を満たすならば

  値「(アイテムの値)C」

 追加条件2「文字列が条件を満たすならば

  値「=$8.B」


4-4.Cに値があり、Bが空の時:処理をスキップする

 やること「なにもしない 」

 条件「リストから要素を取り出した時

 追加条件1「文字列が条件を満たすならば

  値「(アイテムの値)C」

 追加条件2「文字列が条件を満たすならば

  値「=$8.B」


4-5.Cが空の時:Dの値をクリアする

 やること「入力アイテムの値をセットする

  アイテム「D」

  値「=””」

※Cが空になったことで、Dの計算結果も無効になるため、値をクリアします。「=””」と入力してください。

 条件「他のアクションの実行が完了した時

 追加条件「文字列が条件を満たすならば


以上で、設定は完了です。

ページをテストして、動作を確認してみてください。


さらに理解を深めるために

今回の設定手順:「4. ページ内処理を設定する:テーブル外アイテム(C)を編集したときの設定」では、リスト形式のデータ(編集テーブル内の各行)に対して1行ずつ処理するために、やること「テーブルやリストウィジェットから行を取り出す」、条件「リストから要素を取り出した時」を使用し、設定しました。

これは、データの塊(リスト)を上から1行ずつ順番に読み込み、リストの最後まで同じ処理を自動で繰り返す(ループ処理する)ための方法です。

以下のリンク先は、カスタマインに関する参考記事ですが、エブリサイトでもループ処理の考え方や仕組みはまったく同じです。より詳しく仕組みを理解したい方は、ぜひあわせてご覧ください。


エブリサイトのドキュメントページサポートページもぜひご活用ください。