連結與載入和公式、預設值一樣,都只會在輸入的時候、在輸入的地方觸發。也就是說,如果我在「訂單」表單上做了連結與載入的設計,設定訂單表單上的客戶編號欄位連結自客戶表單上的客戶編號欄位、訂單表單上的客戶姓名、客戶電話、客戶地址欄位都載入自客戶編號的同名欄位:
在設計存檔之後,我的「訂單」和「客戶」表單就建立了連結與載入的關係,但這並不代表我的建立一筆訂單資料時,不需要做任何事情,客戶資料就會自動出現在訂單上,因為電腦並不知道現在下訂單的是哪一位客戶,我必須要透過「手動點選或輸入客戶編號」的這個行為,告訴電腦下訂單的是哪個客戶編號,電腦才能幫我在客戶姓名、電話、地址欄位帶出當時對應的資訊,而這個「手動點選或輸入客戶編號」的行為,就是「觸發」連結與載入的方式。
連結與載入只會在輸入的時候觸發,意思就是在輸入資料之後,如果日後連結與載入的來源更動了,系統並不會自動將這個更動同步到帶入資料的那張表單欄位裡。
舉例來說,假如我在 2019/09/08 輸入了一張訂單,訂購客戶為編號 001 的客戶,名字叫 Emily、地址為台北市羅斯福路一段一號,訂單之後順利出貨並送達客戶地址。到了 2020 年,Emily 搬家了,我們在「客戶」表單中將她的地址改成南昌路二段二號,此時這個地址的更新按理來說不該反映到 2019 年舊的訂單資料中,因為 2019 年的地址確實就是舊的羅斯福路一段一號。
因此,如果你覺得明明設計了連結與載入,為什麼載入欄位(地址)跟來源不一樣?可以確認一下當連結與載入觸發的時候,來源表單載入欄位的值是什麼,也許會找到原因。(可以透過資料修改紀錄來查看找線索。
舉例來說,我看到訂單中客戶地址是羅斯福路一段一號,但客戶表單中這位客戶的地址明明是南昌路二段二號,此時我可以先透過歷史紀錄找出這筆訂單資料是在 2019 年 9 月 8 日早上 10:00 建立的,當時有顯示客戶編號(連結欄位)填入了 001,而地址欄位填入了羅斯福路一段一號;再回頭看客戶資料,發現 2020 年 9 月 8 日客戶地址從「羅斯福路一段一號」被修改成「南昌路二段二號」,因此可以知道在 2020 年 9 月 8 日資料修改前,也就是連結與載入觸發的當下,客戶地址確實是「羅斯福路一段一號」。
這裡比較容易出現的陷阱是「空值」,舉例來說,假設 2019 年 9 月 8 日早上 10:00 建立訂單時,來源表單「客戶」表單裡地址欄位是空的沒填寫,那麼訂單上的「地址」欄位值也會是空的。假如在 2020 年我們發現沒填到客戶地址,在客戶表單中填上地址,就會出現來源表單地址欄位有地址、目的表單的地址欄位卻空空的、看似沒有成功帶出資料的樣貌。其實這狀況和前面的例子是完全一樣的,但因為是空值,我們比較容易誤解為「沒有帶出資料」。
假設你的需求就是「我希望A 表單更動時,以 A 為連結載入來源的 B 表單更動」,你可以額外做個設定,也就是到設計模式下 > 表單工具 > 連結與載入 > 點齒輪,勾選隨時同步載入欄位值,或者點「將這組(或所有)連結與載入的欄位同步為最新資料」重新觸發一次連結與載入。
要注意的是,這個勾選代表的是「當來源更動時,同步更動載入欄位」,並不是「隨時確保載入欄位欄位值跟來源一模一樣」喔!這兩者有一點微妙的差別,因為「隨時同步載入載入欄位值」的運作方式是,當有人編輯來源表單(例如上面例子的「客戶」)時,系統就會觸發一次連結與載入,確保目的表單(例如上面例子的「訂單」表單)載入欄位值和客戶表單相同。
但是,假如我今天是跑去改「訂單」表單的客戶地址,我自己把客戶地址改成「中壢市大享街1號」,此時系統並不會幫我回頭去把來源(客戶)表單的地址資料也改成「中壢市大享街1號」,因為這也不太合理(應該是訂單表單去同步客戶表單的資訊,而不是客戶資訊反過來被修改)。