1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

rex0220 計算式プラグイン テーブル転記後に編集

Last updated at Posted at 2025-06-01

計算式プラグインで、テーブル転記後に編集可能に設定してみます。

概要

テーブル1の選択行からテーブル2にコピーし、テーブル2の項目(ドロップダウンT2,数値T2,文字列T2)を編集可能に設定します。

  • テーブル1の行追加時、テーブル2に自動反映
  • テーブル1の日付T1 変更時に、テーブル2の日付T2に自動反映

テーブル行を識別するため、行追加毎にSEQ1へ番号を付与します。

2025-06-01_11h22_03.png

操作例

2025-06-01_11h42_48.gif

アプリ設定

テーブル行を識別する制御用に、SEQID, SEQ1, SEQ2 を追加します。
SEQID の初期値は 0 を指定してください。

2025-06-01_11h33_35.png

計算式プラグイン設定

「循環参照を許可」をチェック

  • SEQ1: テーブル行追加毎に番号を付与
  • テーブル2: 
    • 更新前のテーブル2の値を dic に保管
    • テーブル1から値をコピー
    • ドロップダウンT2は、コピー時テーブル1、その後は更新前のdic から回復
    • 数値T2, 文字列T2 は、更新前のdic から回復

2025-06-01_11h29_11.png

計算式プラグイン
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
        )
      )
    )
  )
)
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?