FineReport 作為企業級報表工具,支援豐富的資料運算與動態欄位功能。常見需求如「根據出生日期自動計算年齡」,無需資料庫額外欄位,即可在報表設計階段透過內建函數實現。本文以員工資料表為例,示範日期自動計算的完整設定流程。
資料庫僅存「出生日期」,報表需顯示「年齡」欄位。傳統做法需在 SQL 查詢中計算或新增資料庫欄位,FineReport 允許直接在報表模板中定義運算公式,即時反映最新年齡,維護成本極低。

開啟 FineReport 設計器,新建報表模板。依業務需求拖拉欄位至儲存格:員工編號、姓名、出生日期(假設位於 E5 儲存格)、年齡(目標儲存格 E6)。調整欄寬、邊框、標題樣式,完成基本版面。

選取年齡欄位儲存格(E6),於公式編輯器輸入:
=year(now())-year(E5)+1
公式解析:
year(now()):取得系統當前年份(如 2024)。year(E5):取得出生日期儲存格的年份值。+1:依虛歲習慣加 1(若需足歲可改用 if(month(now())>month(E5) or (month(now())==month(E5) and day(now())>=day(E5)), year(now())-year(E5), year(now())-year(E5)-1))。設定完成後,報表預覽即會依當前日期動態顯示正確年齡,無需人工維護。
儲存路徑建議:%FineReport_HOME%/WebReport/WEB-INF/reportlets/com/doc/form/5.3.cpt。啟動報表伺服器,點擊設計器右上角「填報預覽」或於瀏覽器直接存取報表 URL,確認年齡欄位隨日期正確變動。
=year(now())-year(入職日期)=day(到期日-now())quarter(now())、month(now()) 函數。善用 FineReport 內建日期時間函數,能大幅減少資料庫冗餘欄位,確保報表資料即時性與準確性,是報表開發必備技能。