2017年12月19日 星期二

Telerik Report Nullable Date Parameter

markdown

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

#解法

原來要做以下處理:

1. 判斷變數是否為null
```
Parameters.P_InitDateStart is null ```

2. 調整UTC時區問題,沒有自動+8,要手動+8
```
AddHours(Parameters.P_InitDateStart,8) ```

3. 加上小時前,還要做IsNull判斷讓他一定要回傳一個非空的日期值
```
AddHours(IsNull(Parameters.P_InitDateStart, Date(1,1,1)),8) ```

4. 把年份減去1911
```
(AddHours(IsNull(Parameters.P_InitDateStart, Date(1,1,1)),8).Year-1911) ```

5.最後拼起來這些處理就變成這樣:
```
= 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) ```

 暈...

沒有留言:

張貼留言