[FileMaker] Dynamic Portal 的應用 – 即時搜尋

FileMaker小技巧

今天在 Youtube 看到一個 影片 介紹 Dynamic Portal 用來做即時搜尋的應用,覺得蠻有趣的,也自己用 FileMaker Advanced 模仿一遍,也分享給大家。

需要準備的東西

  1. FileMaker Advanced 版本(因為需要一個特定 Custom Function ,才能完成操作,不然就要先請朋友幫忙建立下文的 Custom Function,再把檔案傳給你,這樣雖稍嫌麻煩,但至少是可行的方式)
  2. Custom Function 程式碼,請點開這個 影片 的介紹,可以在影片介紹處複製程式碼

以下介紹大致的操作步驟

步驟 1:建立 Field 欄位

  • id(自動建立一般的 Serial ID 也可以,我自己習慣自動建立 UUID)
  • name(姓名,文字欄位)
  • SearchName(搜尋框,Global 文字欄位)

螢幕快照 2018-03-11 下午8.43.42

螢幕快照 2018-03-11 下午8.47.03

步驟 2:先填入一些姓名做 DEMO

將 Layout 從 Form View 切換到 Table View

簡單填上一些姓名,方便等下 DEMO 使用

  • 馬克
  • 賴瑞
  • 賈伯斯
  • 伊隆
  • 貝佐斯
  • ………
  • ………

螢幕快照 2018-03-11 下午8.51.47

步驟 3:安排欄位位置

在 Layout 上面新增欄位、安排位置

螢幕快照 2018-03-11 下午8.50.09

螢幕快照 2018-03-11 下午8.49.04

步驟 4:建立 Custom Function:「IndexWord」

建立一個 Custom Function,程式碼參考來源在 這裡,在影片的介紹

  • IndexWord (Text ; Header)

螢幕快照 2018-03-11 下午8.56.14

螢幕快照 2018-03-11 下午8.58.32

步驟 5:建立 Calculation 欄位: 「cal_searchName」

建立一個 Calculation 欄位:cal_searchName

計算值:IndexWord ( name ; “” )

Calculation Result 勾選「Text」(這個步驟要記得確認,不然可能會出現問題)

螢幕快照 2018-03-11 下午9.02.04

螢幕快照 2018-03-11 下午9.03.29

步驟 6:建立關係

Manage Database 進入 Relationships 關係圖做設定

複製 DynamicPortal 這個 Table Occurrence <TO>,命名為 DynamicPortal2

Self-Join 的方式連接兩個 Field 欄位: searchName [=] cal_searchName

螢幕快照 2018-03-11 下午9.07.52

步驟 7:新增一個 Portal「DynamicPortal 2」

新增一個 Portal,來源為 DynamicPortal 2

排序 Sort by 「name」

Allow vertical scrolling

螢幕快照 2018-03-11 下午9.13.52

螢幕快照 2018-03-11 下午9.15.11

Portal 內 name 姓名欄位的 Behavior 行為,Browse Mode 取消勾選

這樣可以避免更改到原姓名資料

螢幕快照 2018-03-12 下午7.18.29

步驟 8:建立一個 Script「Trigger Refresh」

建立一個 Script,準備在 Trigger 搜尋框欄位使用

螢幕快照 2018-03-11 下午9.18.22

步驟 9:建立一個 Trigger

對搜尋框按住右鍵,點選 Set Script Trigger

OnObjectModify 選擇步驟 8 已經建立好的 Script: Trigger Refresh

螢幕快照 2018-03-11 下午9.22.37

螢幕快照 2018-03-11 下午9.20.41

步驟 10:測試

回到 Browse Mode

姓名搜尋框輸入一個字「馬」,則底下 Portal 彈出三個搜尋結果

螢幕快照 2018-03-11 下午9.25.33

姓名搜尋框輸入兩個字「馬化」,則底下 Portal 彈出一個搜尋結果

螢幕快照 2018-03-11 下午9.26.59

測試成功。

這個功能跟之前寫過的一篇文章有類似的地方,請參考 這篇文章,今天的介紹的「即時搜尋」雖然比較複雜,但若掌握了這個好用的技巧,還可以建立出更多的應用,分享給大家。

延伸閱讀

[FileMaker] 有辦法設定搜尋的時候,像google那樣,自動跳出相關的關鍵字嗎?