Telerik Report Nullable Date Parameter

背景

有個報表,搜尋條件是兩種日期選一種,日期欄位就是區間開始與區間結束,
在報表檔案設定四個日期變數:A 起始、A 結束、B 起始、B 結束,都可以為空值,
然後還要做民國年轉換,
結果在表頭顯示輸入變數的地方就調了很久,終於成功…

解法

原來要做以下處理:

  1. 判斷變數是否為 null
1
Parameters.P_InitDateStart is null
  1. 調整 UTC 時區問題,沒有自動+8,要手動+8
1
AddHours(Parameters.P_InitDateStart,8)
  1. 加上小時前,還要做 IsNull 判斷讓他一定要回傳一個非空的日期值
1
AddHours(IsNull(Parameters.P_InitDateStart, Date(1,1,1)),8)
  1. 把年份減去 1911
1
(AddHours(IsNull(Parameters.P_InitDateStart, Date(1,1,1)),8).Year-1911)
  1. 最後拼起來這些處理就變成這樣:
1
= IIF(Parameters.P_InitDateStart is null, (AddHours(IsNull(Parameters.P_ArriveDateStart, Date(1,1,1)),8).Year-1911)+"/" +AddHours(IsNull(Parameters.P_ArriveDateStart, Date(1,1,1)),8).Month+"/" +AddHours(IsNull(Parameters.P_ArriveDateStart, Date(1,1,1)),8).Day, (AddHours(IsNull(Parameters.P_InitDateStart, Date(1,1,1)),8).Year-1911)+"/" +AddHours(IsNull(Parameters.P_InitDateStart, Date(1,1,1)),8).Month+"/" +AddHours(IsNull(Parameters.P_InitDateStart, Date(1,1,1)),8).Day)

暈…