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

今天在 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那樣,自動跳出相關的關鍵字嗎?

對「[FileMaker] Dynamic Portal 的應用 – 即時搜尋」的想法

發表留言