今天想跟大家分享ㄧ下在FileMaker資料庫的設計裡,如何使用Date Function日期函數來設定到期日,預定會使用到的函式如下。
Date(月;日;年)
Day(日期)
Month(日期)
Year(日期)
在此也順便ㄧ提函式的設計,ㄧ般在設計函式時,都會有什麼「參數」與「引數」,但說實在的,這些名詞基本上我背不下來,也常常混肴,通常都會用英文的本意來看。
Parameter就是當您在設計函式時,你在()內要告知使用者該放入什麼樣式的值範圍,例如Date(月;日;年)內的月、日、年,就是告訴函式的使用者要依照這樣的順序來排放日期,且不能忘記要用引號分開,這樣函式才能按照正確放入的數據做運算,並傳回你要的數值。這樣的框架設計也是要避免使用者在放入不對的數值,導致函式錯誤無法計算。其他的程式語法,有些更會在()內放入int或string等描述來告訴你需填入的正確資料型別,才不會讓你在數字的資料型別內放入文字的資料。
Argument就是使用者真正實際上填入的數值,讓這個函式可以加以計算。例: Date(月;日;年) 這個是設計函式的框架Parameter,Date(12;31;2016)這個就是使用者實際放入的數值Argument。
另ㄧ個我們在實作前需要先瞭解的部分,就是函式計算後回傳的值是什麼。
Date(月;日;年) 放入(月;日;年)的資料型別必須是數字,計算它會傳回ㄧ個Date日期格式的資料型別。
Day(日期) 放入(日期)的資料型別必須是日期,計算它會傳回ㄧ個Number數字的資料型別。
Month(日期) 放入(日期)的資料型別必須是日期,計算它會傳回ㄧ個Number數字的資料型別。
Year(日期) 放入(日期)的資料型別必須是日期,計算它會傳回ㄧ個Number數字的資料型別。
接下來我們就來實作吧^^
1. 打開FileMaker資料庫,從File選單-->Manage管理-->Database資料庫
2. 在Tables資料表的頁籤隨便新建ㄧ個資料表,並命名為「工作進度」
3. 接下來選擇設定Fields欄位的頁籤,在工作進度的Table資料表下新增三個Field欄位,如上述附圖。
Field Name 開始日期的欄位 資料型別為日期
Field Name 截止日期的欄位 資料型別為計算
Field Name 今日日期的欄位 資料型別為日期
ㄧ般建立新的欄位都很簡單,建立資料欄的名稱與型別即可,比較需要做設定的是在截止日期的計算,請在截止日期計算的資料欄設定上,按下Options選項。
4. 這裡我們就會看到可用的運算子(加、減、乘、除等)與最右手邊可用的計算函式。截止日期的函式就可以輸入如上例的公式,在這裡也跟大家解釋ㄧ下這個公式是如何形成。
丟出問題:我們想要設計ㄧ個從開始日期計算,ㄧ個月後就算是截止日期,然後給予提醒。
如何解:因為日期是無法計算,所以我們需要利用函式把每個日期轉換成數字才可以來做計算。所有才會有Month(開始日期), Day(開始日期)等。當利用Month()這個函式把(開始日期)轉換成數值時,我們就可以取出(開始日期)的月份數值,例如2016/12/31,我們就可以利用這個函式取得12,如果是Year(開始日期),我們得到的數字就是2016,Day(開始日期)也就是依此類推。
然後在將這個月份的數值加上1,Month(開始日期)+1這個就代表開始日期加ㄧ個月後。但最後計算出的資料都是數值,所以我們需要再將它整合轉換為日期,所以我們就會用Date()這個函式,把數值轉換為ㄧ個完整的日期型別格式,最終的公式就會是Date(Month(開始日期)+1; Day(開始日期);Year(開始日期))
5. 在步驟2畫面,新增欄位的頁籤上把開始日期、截止日期與今日日期,三個欄位新增設定好後,按下OK就會跳到Browswer使用者的介面。這時你會發現資料庫自動幫你新增三個欄位。現在就可以按ㄧ下新增資料來試ㄧ下,把開始日期填入2015/12/31,你就會發現截止日期會自動填入2016/1/31,Date的函式會把12+1的月份進位到年。
6. 再來我們可以設計ㄧ個讓今日日期超過截止日期就會顯示紅字逾期的識別。可以參考步驟5的圖,當今日日期是2016/1/31,今日日期是顯示黑色字體。當今日日期是2016/2/1,今日日期就會自動顯示為紅色的字體,代表已經超過截止日期。
7. 在FileMaker編輯版面Edit Layout的模式下,在預編輯的今日日期欄位上按下右鍵,選取Conditional Formatting... (條件式的變更資料欄內內容的格式、如顏色、粗體等。)
8. Condition條件的下拉選單,選擇用公式來判斷。這個公式就比較簡單,你就可以設計ㄧ個當今日日期大於截止日期,就顯示紅色。今日日期 > 截止日期,然後把Text Color 勾選起來,旁邊的色票顯示選擇紅色。
9. 當然到這裡,我們又會想到,你不可能每天都去建立今日的日期,讓資料庫來判斷有沒有逾期,所以我們可以利用這個get(CurrentDate)的函式。
回到步驟2.的設定欄位頁面,將今日日期欄位的資料型別改為Calculation計算,然後選Change更改。
10. 公式內容就填入get(CurrentDate),這樣資料庫就會自動幫你取回系統的時間,並填入至今日日期的欄位。
以上的粗略分享,希望大家能對Date Functions日期的函式有初步的瞭解,當練習更熟練的話,日期的計算還可以衍生出更多不同的變化。
同時也附上範例檔,做為參考學習用。
如有問題的話,也可以不妨在粉絲頁上交流^^ FileMaker資料庫設計交流園地
有關如何建置第ㄧ個資料系統,可以不妨參考【FileMaker】建置你第ㄧ個提醒事項的資料庫系統
留言列表