今天在 Youtube 看到一個 影片 介紹 Dynamic Portal 用來做即時搜尋的應用,覺得蠻有趣的,也自己用 FileMaker Advanced 模仿一遍,也分享給大家。
需要準備的東西
- FileMaker Advanced 版本(因為需要一個特定 Custom Function ,才能完成操作,不然就要先請朋友幫忙建立下文的 Custom Function,再把檔案傳給你,這樣雖稍嫌麻煩,但至少是可行的方式)
- Custom Function 程式碼,請點開這個 影片 的介紹,可以在影片介紹處複製程式碼
以下介紹大致的操作步驟
步驟 1:建立 Field 欄位
- id(自動建立一般的 Serial ID 也可以,我自己習慣自動建立 UUID)
- name(姓名,文字欄位)
- SearchName(搜尋框,Global 文字欄位)
步驟 2:先填入一些姓名做 DEMO
將 Layout 從 Form View 切換到 Table View
簡單填上一些姓名,方便等下 DEMO 使用
- 馬克
- 賴瑞
- 賈伯斯
- 伊隆
- 貝佐斯
- ………
- ………
步驟 3:安排欄位位置
在 Layout 上面新增欄位、安排位置
步驟 4:建立 Custom Function:「IndexWord」
建立一個 Custom Function,程式碼參考來源在 這裡,在影片的介紹
- IndexWord (Text ; Header)
步驟 5:建立 Calculation 欄位: 「cal_searchName」
建立一個 Calculation 欄位:cal_searchName
計算值:IndexWord ( name ; “" )
Calculation Result 勾選「Text」(這個步驟要記得確認,不然可能會出現問題)
步驟 6:建立關係
Manage Database 進入 Relationships 關係圖做設定
複製 DynamicPortal 這個 Table Occurrence <TO>,命名為 DynamicPortal2
Self-Join 的方式連接兩個 Field 欄位: searchName [=] cal_searchName
步驟 7:新增一個 Portal「DynamicPortal 2」
新增一個 Portal,來源為 DynamicPortal 2
排序 Sort by 「name」
Allow vertical scrolling
Portal 內 name 姓名欄位的 Behavior 行為,Browse Mode 取消勾選
這樣可以避免更改到原姓名資料
步驟 8:建立一個 Script「Trigger Refresh」
建立一個 Script,準備在 Trigger 搜尋框欄位使用
步驟 9:建立一個 Trigger
對搜尋框按住右鍵,點選 Set Script Trigger
OnObjectModify 選擇步驟 8 已經建立好的 Script: Trigger Refresh
步驟 10:測試
回到 Browse Mode
姓名搜尋框輸入一個字「馬」,則底下 Portal 彈出三個搜尋結果
姓名搜尋框輸入兩個字「馬化」,則底下 Portal 彈出一個搜尋結果
測試成功。
這個功能跟之前寫過的一篇文章有類似的地方,請參考 這篇文章,今天的介紹的「即時搜尋」雖然比較複雜,但若掌握了這個好用的技巧,還可以建立出更多的應用,分享給大家。
對「[FileMaker] Dynamic Portal 的應用 – 即時搜尋」的想法