資料拋轉按鈕可以讓使用者在來源表單按動作按鈕來將一筆資料中指定的欄位值新增複製到另一張表單。
資料拋轉與多版本表單不一樣。資料拋轉的意義在於,當你拋轉某一筆資料的時候,其中的資料會被複製到另一張表單中,並存成一筆新資料,兩邊的資料是不相關的。因此,你可以改寫被拋轉的資料而且不會影響資料來源。
從表單工具下的自訂按鈕找到資料拋轉。
舉例來說,資料庫有一張「報價單」及另一張「銷售訂單」,「報價單」中的資料其實跟「銷售訂單」資料差不多,但要不要下訂單是顧客的選擇,所以兩張表單不會是完全連動的關係,這時候就能透過資料拋轉來節省重新輸入資料的時間。
「銷售訂單」的架構與「報價單」很像,雖然要設定資料拋轉時,表單之間並不需要有相似的設計或是類似的欄位,但一致性的設計對於修改或辨認上很有幫助。
進入拋轉資料來源的表單設計模式,如範例中的「報價單」表單中,表單工具下設定資料拋轉。
選擇要將資料拋轉到哪張表單,並設定要將表單中哪些欄位拋轉到另一張表單的哪些欄位。+ 可以新增對應欄位;也可以點選右側的自動選擇欄位,來自動填入兩邊相同欄位名稱的欄位。
設定完成後,點擊建立按鈕並命名。名稱建議簡單明瞭,讓使用者能夠快速辨認用途。
儲存設計後,就能在表單中看到剛才新增的按鈕。
使用者按了剛才新增的按鈕後,就會把此筆「報價單」的內容,依據對應設定,新增複製到「銷售訂單」中。
點擊按鈕後,「銷售訂單」就會新增一筆資料,內容是從執行按鈕的那一筆「報價單」資料拋轉過來的。可以看到不僅一般欄位的資料可以被拋轉,子表格中的項目也一併拋轉了。
如果在同一筆資料多次按這個動作按鈕,就會在另一張表單產生多筆重複內容的新資料。如果要避免同一筆資料被多次拋轉,可以參考此篇。
要再次編輯拋轉按鈕,可以回到設計模式下,找到此組動作按鈕,點選名稱後就可以修改對應的欄位。
除了將一般欄位拋轉到另一張表單的一般欄位,也可以將子表格欄位拋轉到另一張表單,可以是子表格拋轉到子表格或子表格拋轉到一般欄位。
以下說明子表格拋轉的兩種情形:
1. 子表格拋轉子表格:從前面「報價單拋轉銷售訂單」的範例中,可以看到「子表格拋轉到子表格」,設定拋轉按鈕時,除了將報價單的「報價單號」、「報價對象」等一般欄位值拋到銷售訂單的一般欄位中,也將報價單的「產品名稱」、「數量」等子表格欄位拋到銷售訂單對應的子表格欄位,按一次按鈕,就會拋轉建立一筆資料。
2. 子表格拋轉一般欄位:狀況略有不同,假設子表格有 N 列資料,按一次按鈕,會在對應表單拋轉建立 N 筆資料。假設有「報價單」表單和另一個「商品報價紀錄」表單,希望從「報價單」表單的子表格,拋轉資料到「報價紀錄」表單的一般欄位。
「報價單」有一般欄位及項次、產品名稱、單價、數量、金額等子表格欄位。
「報價紀錄」有項次、產品名稱、單價、數量、金額等欄位。
在「報價單」進入設計模式,設定資料拋轉到「報價紀錄」。
拋轉資料後,這張「報價單」的子表格包含 3 項報價,因此「報價紀錄」會建立 3 筆對應資料。
參考下表關於資料拋轉的進階設定說明:
進階設定 | 預設值 | 功能 |
---|---|---|
執行時檢查是否拋轉空值到"必填"欄位 | 關閉 | 可以避免目標欄位為必填時沒有填入欄位值。 |
執行時檢查拋轉值是否符合目標欄位的"輸入檢查" | 關閉 | 可以避免拋轉值不符合目標欄位的輸入檢查設定。 |
檢查目標表單上所有的"必填"欄位是否有設定拋轉 | 關閉 | 確認拋轉後目標表單上是否還有必填欄位沒有輸入內容。 |
自動開啟被拋轉的資料(僅限一對一拋轉) | 開啟 | 拋轉後開啟新頁面顯示拋轉後的表單資料,子表格的一對多拋轉不適用。 |
重算目標表單上的所有公式 | 開啟 | 預設為開啟,若不希望直接執行公式重算的話記得取消勾選。 |
執行目標表單上的 workflow | 開啟 | 預設為開啟,若不希望直接執行 Workflow 的話記得取消勾選。 |
將來源資料上鎖 | 關閉 | 可以避免讓使用者在拋轉後修改來源表單的資料。 |
套用子表格篩選條件 | 關閉 | 參考以下套用子表格篩選條件說明。 |
套用子表格分群條件 | 關閉 | 參考以下套用子表格分群條件說明。 |
顯示執行成功時的提示訊息 | 開啟 | 若取消勾選(不顯示執行成功訊息),執行時間較長時,較難掌握是否及何時執行成功,因此建議保留此項勾選。 |
自訂執行成功時的提示訊息 | 關閉 | 勾選後下方會出現訊息輸入欄位可以輸入想要自訂的提示訊息,並請留意字數限制。 |
拋轉來源有子表格欄位時,可以套用篩選條件來只拋轉符合條件的子表格資料,例如「報價單」轉「訂單」時,或許客戶最後只選擇購買某些項目而非全部,而子表格中有欄位記錄「是否確定購買」的話,就可以搭配此欄位值來套用篩選條件。
以下圖為例,原本報價了三個項目,但最後客戶只購買其中兩項,子表格中也有欄位記錄要購買的是哪兩個項目:
原本直接拋轉成訂單的話,會將全部子表格資料一併拋轉,之後你會需要手動刪除不需要的項目,如果設定了套用子表格篩選條件,就可以省略手動刪除的步驟。
根據設定的條件,拋轉建立的訂單中,只會有符合條件的兩筆子表格資料:
備註:當將子表格欄位拋轉到一般欄位時,即使子表格沒有符合篩選條件的資料,拋轉仍會執行,並會顯示為拋轉「 0 」筆資料。
拋轉設定有子表格欄位拋到獨立欄位+子表格欄位拋到子表格欄位,意即子表格有 N 筆資料,就會拋轉成 N 筆獨立資料,並且每筆獨立資料中都有同樣的 N 筆子表格資料(詳細說明可以參考這個章節)。但若你希望的是這些子表格資料,其實要根據某個欄位值分成 N 群後,來決定產生 N 筆獨立資料,並且根據分群後的結果決定每筆資料中的子表格有多少項目,就可以套用子表格分群條件。
像是「銷售訂單」要透過拋轉按鈕建立「採購單」時,如果設計的對應是獨立欄位拋到獨立欄位+子表格欄位拋到子表格欄位,那一筆銷售訂單只會拋成一筆採購單,但若銷售訂單中的各個項目其實是要向不同廠商採購的話,直接這樣拋轉會需要手動根據你總共要採購的廠商數量來執行拋轉 N 次,並逐筆手動選擇該筆採購單的廠商並刪除不是屬於這個廠商的子表格項目資料。
以下圖為例,如果這張銷售訂單的多個銷售項目總共是來自兩家不同廠商:
透過進階設定套用子表格分群條件,根據子表格拋轉到獨立欄位的「廠商編號」做為分群的條件:
就可以直接拋轉成給兩家廠商的採購單,並且各自包含屬於該廠商的子表格項目:
備註:如果分群條件的欄位值是空值時,預設不會被分群並拋轉,但若你希望沒有填寫的分群欄位值也要被拋轉(空值自成一群的話),可以勾選分群欄位值為空值的子表格資料也可以被拋轉。
子表格與一般表格的資料拋轉關係如下表。
拋轉來源 | 拋轉到一般表格 | 拋轉到子表格 |
---|---|---|
從一般表格 | 可以(會建立對應的一筆資料) | 不行 |
從子表格 | 可以(會建立對應的N筆資料,N 為子表格列數) | 可以(會建立對應的一筆資料) |
由於一般欄位只會儲存一個值,而子表格一個欄位可能有超過一個值,因此你不能在將一般欄位的資料,拋轉到子表格,會受到系統阻擋。
選擇拋轉欄位時,若選擇一般欄位拋轉到子表格欄位,系統會將該列標示為紅色,以避免誤選而無法拋轉的情況。
關於移除動作按鈕可以參考這篇。
或是要針對動作按鈕做附加設定的話,例如限制使用使用動作按鈕的權限等,可以參考這篇說明。