2025年8月10日 星期日

AppSheet 教學:一鍵複製整張訂單,包含所有訂單明細

在醫院的應用情境中,慢性病患可能每個月或每兩個月需要回診一次,而每次的藥單內容基本上大同小異。若能一鍵複製整張訂單,並自動更新回診日期,將能大幅提升效率。本文將以一個訂購香純滴雞精的範例,說明如何透過 AppSheet 的「深度複製 (Deep Copy)」功能,建立一個能複製整張訂單(包含所有訂單明細)的系統。

整體思路

AppSheet 內建的「複製」動作 (Copy) 只能複製主表單的當前一筆紀錄,並不會自動複製其關聯的子表單紀錄。要實現主子表一同複製,通常稱為「深度複製 (Deep Copy)」。[1] 這需要我們自己組合一系列的動作 (Actions) 來完成。

我們會建立一個「群組動作 (Grouped Action)」,它會依序執行以下三個件事:

  1. 複製主表紀錄:建立一張新的訂單。

  2. 觸發子表紀錄:接著複製該訂單的所有明細。

  3. 單一複製子表記錄:建立新的明細,並將它們關聯到新的「訂單」上。

步驟一:建立「複製單筆子表記錄」的動作

這個動作是整個複製流程的核心,它的任務是「複製一筆訂單明細」,並將其關聯到最新的那張訂單上。

  1. 前往 Actions 頁籤,點擊 New Action。

  2. For a record of this table:選擇你的子表(例如:訂單明細)。

  3. Action name:給這個動作取一個容易辨識的名稱,例如「增新單筆明細」。

  4. Do this:選擇 Data: Add a new row to another table using values from this row

  5. Table to add to:再次選擇你的子表(例如:訂單明細)。

  6. Set these columns:設定要複製的欄位。

    • [主表的關聯欄位] (例如:訂單編號):這是最重要的部分,要讓新的明細關聯到新的訂單。公式為 MAXROW("訂單", "_ROWNUMBER"),這會找到「訂單」表中最新建立的那一筆紀錄。

    • [子表的欄位] (例如:產品)[產品]

    • [子表的欄位] (例如:數量)[數量]

  7. Appearance:將 Prominence 設定為 Do not display,因為這個動作不需要單獨被使用者看到。

步驟二:建立「複製主表」的動作

這個動作的目的是複製一張新的主訂單。

  1. 前往 Actions 頁籤,點擊 New Action。

  2. For a record of this table:選擇你的主表(例如:訂單)。

  3. Action name:例如「複製訂單」。

  4. Do this:選擇 Data: Add a new row to another table using values from this row

  5. Table to add to:再次選擇你的主表(例如:訂單)。

  6. Set these columns

    • [主表的主鍵] (例如:訂單編號)UNIQUEID()

    • 其他你想要複製的欄位 (例如:姓名)[姓名]

    • 需要更新的欄位 (例如:購買日期)NOW()

  7. Appearance:同樣設定為 Do not display

步驟三:建立「觸發複製所有子表」的動作

這個動作會針對主訂單的所有關聯明細,逐一執行第一步驟建立的「複製單筆子表記錄」動作。

  1. 前往 Actions 頁籤,點擊 New Action。

  2. For a record of this table:選擇你的主表(例如:訂單)。

  3. Action name:例如「觸發複製所有明細」。

  4. Do this:選擇 Data: execute an action on a set of rows

  5. Referenced Table:選擇你的子表(例如:訂單明細)。

  6. Referenced Rows[Related 訂單明細s]

  7. Referenced Action:選擇第一步驟建立的「增新單筆明細」動作。

  8. Appearance:同樣設定為 Do not display

步驟四:建立最終給使用者點擊的「群組動作」

最後,我們將上述建立的三個動作組合成一個使用者可以點擊的按鈕。

  1. 前往 Actions 頁籤,點擊 New Action。

  2. For a record of this table:選擇你的主表(例如:訂單)。

  3. Action name:例如「複製整張訂單」。

  4. Do this:選擇 Grouped: execute a sequence of actions

  5. Actions:依序加入以下三個動作:

    • 複製訂單

    • 觸發複製所有明細

  6. Appearance

    • Prominence:選擇你希望它顯示的位置,例如 Display overlay (會出現在右下角)。

    • Display name:可以再次輸入顯示的名稱。

    • Action icon:選擇一個適合的圖示,例如 Copy

最後檢查與同步

  1. 儲存變更:點擊右上角的 "Save" 按鈕。

  2. 同步 App:在手機或瀏覽器上同步你的 App,然後找到一筆含有子表記錄的主訂單。

  3. 測試:點擊你剛剛建立的「複製整張訂單」按鈕,你會看到一筆新的主訂單被建立,且子表內的紀錄也被完整複製過來,並關聯到新的訂單編號!


 


沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。

AppSheet 教學:一鍵複製整張訂單,包含所有訂單明細

在醫院的應用情境中,慢性病患可能每個月或每兩個月需要回診一次,而每次的藥單內容基本上大同小異。若能一鍵複製整張訂單,並自動更新回診日期,將能大幅提升效率。本文將以一個訂購香純滴雞精的範例,說明如何透過 AppSheet 的「深度複製 (Deep Copy)」功能,建立一個能複製整...