[FileMaker] Debug 的一個過程記錄

FileMaker 不像其他的程式語言,其他的程式語言在出現錯誤的時候基本都會主動伴隨著「錯誤提示」,寫程式的人可以根據這些錯誤提示作為線索,進而找出問題並將錯誤更正過來,錯誤提示可以說是開發程式最重要的一個環節。

FileMaker 不知道爲什麼,很少情況會主動出現「錯誤提示」,在沒有錯誤提示的情況下,開發者不容易直接去把問題給找出來,想要修正某個錯誤,就必須根據自己的經驗,東試一下西試一下,可能需要花費好一段時間才能把問題找出來。

最近遇到的一個例子

以我自己正在維護的一個牧場系統為例,用 Portal 搭配 ExecuteSQL 函數把需要的工作列出來,以提醒牧場工作人員近期工作事項。

下方圖中共有兩個 Portal,分別代表不同的區域,上方的 Portal 可以正常顯示工作,而下方的 Portal 是空白的,表示下方的 Portal 可能有兩個情況:

  1. 所有工作已全數完成,沒有工作需要被顯示出來。
  2. 出現問題,導致這部分的工作列表沒有被顯示。(簡單說就是有 Bug)

我去看了一下資料,比對之下發現第二個 Portal 的確是有工作需要被顯示出來的,所以應該是第 二個情況:出現問題,導致這部分的工作列表沒有被顯示。

這個時候就要真的需要開始 Debug,檢查看看 FileMaker 哪邊有問題。

螢幕快照 2017-12-26 下午3.07.21.png

檢查的項目

  • Relashionship 關係圖是否有問題?關係連線兩方的 Field 是否有弄錯?
  • Relashionship 關係的選項是否有不需要的設定,或是設定錯誤?
  • 是某沒有選到正確的 Portal?
  • Portal 裡面的 Field 欄位、Merge Field 欄位是否有對應到同樣的 Portal 名稱?
  • Portal 的選項是否有不需要的設定,或是設定錯誤?
  • Field 欄位的設定或寫法是否有錯誤?

檢查複雜的欄位寫法

由於這個欄位是 Calculation Field 計算欄位,中間又用上較為特殊的函示跟表示方法,計算過程的確有比較複雜,發生錯誤的機率也比較高,確定前面幾個大的檢查方向沒有問題之後,就開始專心處理 Calculation Field 的部分。

螢幕快照 2017-12-26 下午3.06.12.png

把正確的算式直接拿來比對

計算式很長很多的情況下,一行一行去檢查並不容易發現問題,忽然想到可以用一個方法 – 「正確的複製一份,兩份互相比對」。

由於第一個 portal 配合的計算欄位是正確的,於是就把這個正確的計算式整份複製下來,貼到第二個計算欄位的計算式下方,上、下算式對照著一起看,果然很快的就看出問題所在:

上方的算式第 5 行前面少了一個 AND,所以沒有正確完成整個計算過程,當然也就不會顯示工作列表。

螢幕快照 2017-12-26 下午3.54.46.png

補上 AND,然後把下方拿來暫時做比對,實際上不需要的程式刪除掉,再測試看看是否正常。

螢幕快照 2017-12-26 下午4.00.43.png

賓果!就是這個問題,現在第二個 Portal 已經可以正常顯示資料。

螢幕快照 2017-12-26 下午4.02.56.png

結論

這篇文章只是記錄自己 Debug 的一個過程,而 Debug 的方法絕對不只有一種,也沒有絕對的對錯,但我想能更快速的抓出問題所在,做出更好的系統解決方案,是每個 FileMaker 都想要達到的目標,祝大家開發順利。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s