今天想要分享在 FileMaker Magazine 網站看到的一個技巧:
利用 Self-Join Portal + Filter 設定,新增產品記錄(因為示範使用的檔案是針對產品資料庫,實際上這邊的記錄可以指所有的Record「紀錄」,並不侷限於產品記錄而已。)
關於這個方法,第一次看到的時候嚇了一跳,竟然可以這樣使用,實在是非常的方便啊!但是我忘記是在 FileMaker Magazine Website 還是 FileMaker Magazine Youtube 看到的,Matt Petrowsky 是高產量的教學者,加上用影片產出的方式,不容易搜尋內部內容關鍵字,所以暫時找不到影片來源連結,日後有看到再回來補上。
使用的檔案仍是先前一直使用的檔案:50藍茶飲-01
操作步驟介紹:
新增一個 Global Field 欄位:PRODUCT_ADD,點擊 Options…,做欄位細部設定
進入 Storage,勾選 " Use global storage (one value for all records) "
進入 Relationships 關係圖設定,新增一個 <TO> Table Occurrence: “Product_Add"
連接 “Product" 跟 “Product_Add" 兩個 <TO> Table Occurrence
連接的欄位為 name [ = ] PRODUCT_ADD
點選 [=] 進入關係設定編輯,勾選右邊 Product_Add <TO> 的 " Allow creation of records in this table via this relationship "
回到 Layout Mode,新增一個 Portal: " Product_Add "
設定這個 Portal 只有唯一的一行,唯一用途就是要用來「輸入產品名稱」
點選 " Filter portal records " Specify…
Filter 設定為 " False “,這裡是 FileMaker 比較「特殊」的部分!
Portal 的特性是「最後一列是預備輸入新記錄的位置」
我們剛好可以利用這個特性,Filter " False " 把這個不顯現的欄位顯現出來,讓我們可以用來新增產品名稱!
Portal 裡面放 Field 欄位:Product_Add::name
稍微調整一下 Portal 跟 Field 欄位的長寬大小,還有欄位的文字對齊
回到 Browse Mode,可以看到「新增產品」欄位被包覆在 Portal 之中
測試一下,在新增產品的欄位輸入「紅茶18號」新產品名稱
在 Portal 之外任何位置點選一下,Commit 輸入
新產「紅茶18號」的產品名稱快速建立完成。
然後新增產品的欄位會「自動清空」,準備下一筆產品名稱的輸入,不需要另外寫 Script,這是這個技巧最大的優點之一!
結論
這個範例看似簡單但實際不簡單,相關的技巧跟知識都要齊備,才能完成這個好用的功能,不過相對的,直接學習去學習如何複製出這個功能,我們可以學會下面幾個觀念:
- Self-Join Relationship
- Table 和 <TO> Table Occurrence 的差異
- Portal
- Filter Portal Records
- Global Field
此外,還有一個好處,有朋友在聊天時提到不知道怎麼設定 <TO> 關係,我們今天看到的這個範例:50藍茶飲-01,從頭到尾就只有一個 Table: Product
其他用來做關係連接的 Table Occurrence <TO>: Product_All, Product_Add,Product_All 用來「顯示」所有產品資料;Product_Add 則用來「新增」產品
這兩個 <TO> 的來源都是 Product 這個 Table,也可以說兩個 <TO> 是 Product 的分身,連自己都可以分身讓自己連接創造關係了,沒道理不能連接不同來源 Table 的 <TO>
唯一需要注意的是要利用關係的目的為何、用什麼欄位連接、連接的方式,這些才是考慮的重點,也是學習 FileMaker 這個「關聯式」資料庫,特別需要用心理解的重要關鍵。