計算式プラグインで、テーブル転記後に編集可能に設定してみます。
概要
テーブル1の選択行からテーブル2にコピーし、テーブル2の項目(ドロップダウンT2,数値T2,文字列T2)を編集可能に設定します。
- テーブル1の行追加時、テーブル2に自動反映
- テーブル1の日付T1 変更時に、テーブル2の日付T2に自動反映
テーブル行を識別するため、行追加毎にSEQ1へ番号を付与します。
操作例
アプリ設定
テーブル行を識別する制御用に、SEQID, SEQ1, SEQ2 を追加します。
SEQID の初期値は 0 を指定してください。
計算式プラグイン設定
「循環参照を許可」をチェック
- SEQ1: テーブル行追加毎に番号を付与
- テーブル2:
- 更新前のテーブル2の値を dic に保管
- テーブル1から値をコピー
- ドロップダウンT2は、コピー時テーブル1、その後は更新前のdic から回復
- 数値T2, 文字列T2 は、更新前のdic から回復
計算式プラグイン
OPTION: 循環参照を許可
// SEQID NUMBER
NVL(SEQID, 0) // 既存レコード対応(0 セット)
// テーブル1.番号T1 NUMBER
ROWNO(テーブル1)+1
// テーブル1.SEQ1 SINGLE_LINE_TEXT
IF(SEQ1, SEQ1,
LET(
newid, SEQID+1,
dummy, FSET(SEQID, newid),
newid
)
)
// テーブル2 SUBTABLE
LET(
dic, DIC(),
w, TABLE_MAP(テーブル2,
TPDIC("dummy",
DIC_ITEM(dic,
SEQ2,DIC(
"ドロップダウンT2",ドロップダウンT2,
"数値T2", 数値T2,
"文字列T2",文字列T2,
"SEQ2",SEQ2
)
))
),
TABLE_DATA(
TABLE_MAP(テーブル1,
TPFILTER(IN(選択,"Y")),
TPDIC(
"番号T2",番号T1,
"日付T2",日付T1,
"ドロップダウンT2",
IF(DIC_ITEM(DIC_ITEM(dic, SEQ1),"SEQ2"),
DIC_ITEM(DIC_ITEM(dic, SEQ1),"ドロップダウンT2"),
ドロップダウンT1
),
"数値T2", DIC_ITEM(DIC_ITEM(dic, SEQ1),"数値T2"),
"文字列T2", DIC_ITEM(DIC_ITEM(dic, SEQ1),"文字列T2"),
"SEQ2",SEQ1
)
)
)
)
// テーブル2.番号T2 NUMBER
// テーブル2.日付T2 DATE
// テーブル2.SEQ2 SINGLE_LINE_TEXT
※ dic の行参照を LET 関数で指定した例
// テーブル2 SUBTABLE
LET(
dic, DIC(),
w, TABLE_MAP(テーブル2,
TPDIC("dummy",
DIC_ITEM(dic,
SEQ2,DIC(
"ドロップダウンT2",ドロップダウンT2,
"数値T2", 数値T2,
"文字列T2",文字列T2,
"SEQ2",SEQ2
)
))
),
TABLE_DATA(
TABLE_MAP(テーブル1,
TPFILTER(IN(選択,"Y")),
LET(
row, DIC_ITEM(dic, SEQ1),
TPDIC(
"番号T2",番号T1,
"日付T2",日付T1,
"ドロップダウンT2",
IF(DIC_ITEM(row,"SEQ2"),
DIC_ITEM(row,"ドロップダウンT2"),
ドロップダウンT1
),
"数値T2", DIC_ITEM(row,"数値T2"),
"文字列T2", DIC_ITEM(row,"文字列T2"),
"SEQ2",SEQ1
)
)
)
)
)