AppSheet 內建的「複製」動作 (Copy) 只會複製主表的當前那一筆紀錄,並不會自動複製其關聯的子表紀錄。要實現主子表一起複製(通常稱為「深度複製 Deep Copy」),我們需要自己組合一系列的動作 (Actions) 來完成。
主表 (Parent Table): 訂單 (Orders) 子表 (Child Table): 訂單明細 (Order Details) 主表的主鍵 (Key): 訂單ID (OrderID) 子表的關聯欄位 (Ref Column): 所屬訂單ID (Related OrderID)
整體思路
複製主表紀錄:建立一張新的訂單。 觸發子表複製:找到舊訂單的所有明細。 逐一複製子表紀錄:根據舊的明細,建立新的明細,並把它們關聯到「新的」訂單上。
步驟一:建立「複製單筆子表紀錄」的動作
前往 Actions 頁面,點擊 New Action。 For a record of this table: 選擇你的子表 (例如:訂單明細)。 Action name: 給它一個內部使用的名稱,例如 (內部)複製單筆明細。 Do this: 選擇 Data: Add a new row to another table using values from this row。 Table to add to: 選擇子表本身 (例如:訂單明細)。 Set these columns: 這是最關鍵的部分! [子表的主鍵] (例如 明細ID): 設為 UNIQUEID(),確保新紀錄有唯一的 ID。 [關聯主表的欄位] (例如 所屬訂單ID): 這裡要填入新建立的那筆主表紀錄的 ID。最簡單可靠的方法是使用 MAXROW() 函數找到「剛剛」被新增的那筆主表紀錄。 公式解說: "訂單": 你的主表名稱。 "_ROWNUMBER": AppSheet 內部紀錄的行號,數字越大代表越新。 MAXROW(...): 找到 _ROWNUMBER 最大的那一筆主表紀錄。
其他子表欄位 (例如 產品名稱, 數量, 單價): 直接從來源複製即可。 [產品名稱] = [產品名稱] [數量] = [數量] ... 以此類推。
Appearance: 將 Prominence 設為 Do not display,因為這個動作不需要單獨顯示給使用者。
步驟二:建立「複製主表」的動作
前往 Actions 頁面,點擊 New Action。 For a record of this table: 選擇你的主表 (例如:訂單)。 Action name: (內部)複製主訂單。 Do this: 選擇 Data: Add a new row to another table using values from this row。 Table to add to: 選擇主表本身 (例如:訂單)。 Set these columns: [主表的主鍵] (例如 訂單ID): 設為 UNIQUEID()。 其他你希望複製的欄位 (例如 客戶名稱, 地址): [客戶名稱] = [客戶名稱]
你可能希望更新的欄位 (例如 訂單日期): [訂單日期] = TODAY()
Appearance: 同樣設為 Do not display。
步驟三:建立「觸發複製所有子表」的動作
前往 Actions 頁面,點擊 New Action。 For a record of this table: 選擇你的主表 (例如:訂單)。 Action name: (內部)觸發複製所有明細。 Do this: 選擇 Data: Execute an action on a set of rows。 Referenced Table: 選擇你的子表 (例如:訂單明細)。 Referenced Rows: 這裡要填入一個表達式,來選取當前主紀錄關聯的所有子紀錄。通常 AppSheet 已經幫你建好了,欄位名稱會是 Related [子表名稱]s。 Referenced Action: 從下拉選單中,選擇我們在步驟一建立的動作 (內部)複製單筆明細。 Appearance: 同樣設為 Do not display。
步驟四:建立最終給使用者點擊的「群組動作」
前往 Actions 頁面,點擊 New Action。 For a record of this table: 選擇你的主表 (例如:訂單)。 Action name: 給它一個使用者看得懂的名稱,例如 複製整張訂單 或 複製主表與子表。 Do this: 選擇 Grouped: execute a sequence of actions。 Actions: 依序加入以下兩個動作: (內部)複製主訂單 (步驟二建立的) (內部)觸發複製所有明細 (步驟三建立的) 順序非常重要! 必須先複製主表,再觸發複製子表。
Appearance: Prominence: 選擇你希望它顯示的位置,例如 Display overlay (會出現在右下角)。 Display name: 可以再次確認顯示的名稱。 Action icon: 選擇一個合適的圖示,例如 Copy。
最後檢查與同步
保存所有變更:點擊右上角的 "Save" 按鈕。 確認顯示設定:確保只有最後那個「群組動作」是顯示的,其他三個內部動作都是 Do not display。 同步 App:在手機或瀏覽器上同步你的 App,然後找到一筆有子表紀錄的主表資料,點擊你新建立的「複製整張訂單」按鈕。
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。