計算式プラグインのボタンクリックでテーブル行追加・更新を行ってみます。
概要
「テーブル行追加」ボタンクリックで、テーブル行を追加・更新します。
テーブルに日付が無かった場合は、テーブル行を追加し、日付順に並べます。
テーブルに日付があった場合は、該当テーブル行の項目を更新します。
「テーブルクリア」ボタンクリックで、テーブルをクリアします。
「日付」を変更すると、テーブル行に該当日付があれば、該当行の項目値を取得します。
操作例
アプリフォーム設定
スペース項目に2個配置して、要素IDを設定します。
日付選択時にテーブル行の項目値を取得するしくみのため、「計算制御用」を配置します。
計算式プラグイン設定
「循環参照を許可」, 「非同期計算」をチェックします。
OPTION: 循環参照を許可, 非同期計算
// sp1:(sp1) SPACER
BUTTON(
BOPT("TITLE","テーブル行セット"),
IF(日付,
LET(
rno, FIRSTIF(日付T==日付,ROWNO(テーブル)),
IF(rno === "",
LET(
row, JSON_S(ARRAY(DIC(
"日付T",DATE_FORMAT(日付),
"科目T",科目,
"文字列1T",文字列1,
"数値1T",数値1
))),
FSET_TADD(テーブル, row)
),
ARRAY(
FSET(科目T, 科目, rno),
FSET(文字列1T, 文字列1, rno),
FSET(数値1T, 数値1, rno)
)
)
)
)
)
// sp2:(sp2) SPACER
BUTTON(
BOPT("TITLE","テーブルクリア"),
LET(
clearTable, TABLE_DATA(ARRAY()),
FSET(テーブル, clearTable)
)
)
// テーブル SUBTABLE (editable)
TABLE_SORT(テーブル,
TPFILTER(日付T),
TPSORT(日付T)
)
// 計算制御用 SINGLE_LINE_TEXT (hide)
IF(AND(EV_INFO("fcode")="日付",日付),
LET(
rno, FIRSTIF(日付T==日付,ROWNO(テーブル)),
dumy, IF(rno !== "", ARRAY(
FSET(科目,SUBTABLE(科目T,rno)),
FSET(文字列1,SUBTABLE(文字列1T,rno)),
FSET(数値1,SUBTABLE(数値1T,rno))
)),
""
)
)