如果你希望在表單 A 的資料可以去改變表單 B 的資料,例如一張訂單確認出貨之後,可以扣該商品的庫存,這一類需求就可以利用更新別張表單欄位值按鈕。以下將用扣庫存來示範這個功能,假設有兩張表單,左邊是「銷售訂單」,右邊是「商品資料」。
由於是要從「銷售訂單」的資料去影響「商品資料」中的庫存,因此要在「銷售訂單」中設定按鈕。進入表單頁設計模式後,選擇 表單工具,並在 自訂按鈕下找到更新別張表單的欄位值
在視窗中設定要更新的表單,接著設定怎麼更新以及在什麼情況下更新。
將銷售訂單的「數量」欄位
更新到:「-」(因為是要扣庫存,所以選擇「減」;若是設定入庫則選擇「加」)
商品表單的「總數量」欄位
如果要一次更新多個欄位的話,可以按「+」來新增,更新欄位值的順序是由上往下執行的。
當銷售訂單的欄位:商品編號
「等於」
商品資料的欄位:商品編號
如果有多個條件的話,可以按「+」來新增條件。設定多組條件的話,會在全部條件都滿足的情況下才可以執行按鈕。假設條件有誤會無法儲存按鈕設定,可以參考這篇來看常見的錯誤設定。
完成後,按建立更新別張表單欄位值動作按鈕,並命名按鈕。該按鈕就會被新增在表單設定下的動作按鈕中。每筆資料的表單頁中右下角也可以看到該按鈕。
離開前記得儲存設計!
新增此按鈕的同時,系統會幫你新增了一個日期時間欄位,這個欄位用來自動紀錄動作按鈕執行的日期及時間。更新別張表單欄位值動作按鈕會需要此欄位作為依據,因此請勿刪除這個欄位!
如果是 2017/06/01 之後新增或修改此動作按鈕的話,建議將此日期時間欄位設成唯讀,避免使用者手動修改動作按鈕執行結果的判斷日期。
如果是 2023/03/21 之後建立此按鈕所自動產生的記錄執行時間欄位會有不可刪除的屬性,要先刪除按鈕之後才能刪除此欄位。
在「銷售訂單」中可以看到,選擇「單人座扶手椅」這個商品時,列表中顯示目前該商品的庫存為 35,而資料中的出庫數量為 15。
新增並儲存了這張訂單後,按右下方的「扣庫存」按鈕。
系統會跳出訊息告訴你資料已經更新,並在系統建立的日期時間欄位自動填上執行動作的日期及時間。
該商品庫存已經被扣減 15,變為 20。
要復原「扣庫存」的話,可以按下「復原扣庫存」動作按鈕(有勾選「建立復原按鈕」的話,才會看到「復原扣庫存」按鈕)。按完之後,會發現系統建立的日期時間欄位值被清空了,代表目前是沒有執行過更新別張表單欄位值(扣庫存)的動作。
(如果你是2017/06/01以前新增此動作按鈕,並且沒有在此之後修改該動作按鈕設定的話,請參考這篇說明來執行復原動作。)
執行完成後,該商品的庫存數量就會復原到扣減前。
舊的更新別張表單欄位值按鈕設計要執行復原動作,需先手動將系統的日期時間欄位值清空,再按「復原扣庫存」動作按鈕。
以下為復原按鈕在新舊(新舊分界為 2017/06/01)設計上的差異:
舊版:檢查最後修改日期是否為空,若是則執行並更新最後修改日期。無防止連續執行復原之機制,只要判斷的日期時間欄位為空即可按復原動作按鈕,可能執行多次復原。
新版:直接執行,並自動清空最後修改日期時間。若最後修改日期為空,則不執行復原,並回傳執行成功(視為沒有更新過,可避免連續執行復原)。
參考下表進階設定說明:
進階設定 | 預設值 | 功能 |
---|---|---|
重新計算表單中的公式 | 關閉 | 執行更新欄位值時,重新計算目標表單上的公式。如果目標表單有包含參照到更新欄位的公式欄位,請記得勾選此選項。 |
建立復原按鈕 | 開啟 | 預設為開啟,按下更新按鈕後,會建立一個復原動作按鈕。詳情請參考考此章節。 |
儲存時自動執行 | 關閉 | 每次儲存資料時,自動執行復原按鈕及此動作按鈕以保持目標欄位的值有被同步更新。但每張表單只能有一個被設定為自動執行的動作按鈕。 |
儲存時檢查目的表單存取權限 | 關閉 | 檢查執行按鈕的使用者是否有目標表單的存取權限。 |
檢查目標表單中的"必填"欄位 | 關閉 | 執行更新時,若將目標表單上的必填欄位更新為空值時,會顯示無法更新。 |
檢查目標表單中欄位的"輸入檢查" | 關閉 | 執行更新時,若更新的欄位值不符合輸入檢查,會顯示無法更新。 |
找不到任何符合更新條件的資料時,視為執行失敗 | 關閉 | 執行更新時,如果沒有欄位符合更新條件,會顯示執行失敗。 |
找不到任何符合更新條件的資料時,顯示警告訊息 | 開啟 | 預設為開啟,如果不希望顯示警告訊息,請記得取消勾選此設定。 |
載入目標表單上的欄位預設值 | 關閉 | 如果希望在執行此動作按鈕時將預設值填入目標表單,可以勾選此選項。 |
載入這張表單上的欄位預設值 | 關閉 | 如果希望在執行此動作按鈕時將預設值填入此表單,可以勾選此選項。 |
套用子表格篩選條件 | 關閉 | 參考以下套用子表格篩選條件說明。 |
顯示執行成功時的提示訊息 | 開啟 | 若取消勾選(不顯示執行成功訊息),執行時間較長時,較難掌握是否及何時執行成功,因此建議保留此項勾選。 |
自訂執行成功時的提示訊息 | 關閉 | 勾選後下方會出現訊息輸入欄位可以輸入想要自訂的提示訊息,並請留意字數限制。 |
當更新別張表單欄位值有包含子表格欄位時,可以套用篩選條件來只更新符合條件的子表格資料。例如在「出庫單」要透過按鈕扣庫時,或許最後只出貨了其中兩項商品,而你的子表格中有欄位記錄「確定出貨」的話,就可以搭配套用篩選條件。
以下圖為例,「出庫單」中原本有三個項目,但最後只出其中兩項,子表格中也有欄位記錄是哪兩個項目:
在進階設定中選擇套用子表格篩選條件。
根據設定的條件,執行按鈕後就只會扣除有「確定出貨」的子表格項目數量。
預設情況下,每一筆資料中一個更新別張表單欄位值動作按鈕只能執行一次,系統會透過檢查執行時間欄位是否有值來避免重複執行。而需要重複執行的使用情境通常有兩種:
此類重複執行通常更新方式為「+ 加、- 減」,若直接再次執行會造成重複加減的問題,因此會需要先執行復原動作按鈕,調整好資料後再重新執行。舉例來說,如果有一張「出庫單」中的子表格原本有兩列品項,且已經執行過扣庫存動作按鈕,而你希望新增第三列品項並且執行出庫,操作步驟應為:
步驟ㄧ:執行復原動作按鈕
為復原既有兩列品項的庫存,以避免後續重複扣庫存。執行復原動作按鈕時,系統會以現有的資料反向執行,例如若原本減去 3 個庫存,那麼會以現有的資料再加回 3 個庫存,並同時清空執行時間欄位的欄位值。
步驟二:於子表格中新增第三列品項,完成後再次執行扣庫存動作按鈕。
此類重複執行通常更新方式為「= 等於」。舉例來說,來源表單和目的表單直接沒有連結關係,但你希望 A 表單的欄位值每一次變更都可以隨時更新到 B 表單上,可以參考以下設定:
步驟一:建立更新別張表單欄位值動作按鈕時,在進階設定中勾選「儲存時自動執行」。
步驟二:在系統建立的執行時間欄位套用公式「" "」,代表自動填入空值,以便下次再次執行。
1. 要做加減運算,更新別張表單欄位值所依據的來源欄位及被更新的目的欄位都必須是數字欄位;而填入字串的話請用「=」。
2. 需設定至少一組的更新條件。
3. 設定不同組條件時,目標條件欄位不能被重複設定。
4. 設定更新別張表單欄位值動作按鈕時系統所幫你新增的日期時間欄位不能移除,否則此動作按鈕會無效。但你可以重新命名此欄位或是隱藏。
5. 舊版不能在記錄動作日期時間欄位已經值的情況下,再按一次更新別張表單欄位值的動作按鈕或是復原動作按鈕,如果要按兩次動作按鈕的話,要先把記錄日期時間欄位的值清空。
6. 有多個更新別張表單欄位值的動作時,只能針對其中一個來設定儲存時自動執行。
關於移除動作按鈕可以參考這篇。
或是要針對動作按鈕做附加設定的話,例如限制使用使用動作按鈕的權限等,可以參考這篇說明。