2015-02-09 54 views
0

我們的數據庫有一個報表收件人的表格,並附有他們的首選時區。從數據庫記錄中設置「REPORT_TIME_ZONE」參數

如何使用此列作爲報告中REPORT_TIME_ZONE參數的值?

解決方法我都試過的/想法:

  • ALTER SESSION SET TIME_ZONE='Europe/Zurich';guilio says no
  • def recipientTzCode = (SELECT TIMEZONE_CODE FROM REPORT_RECIPIENTS WHERE RECIPIENT_ID=$P{recipientId});頂部,但這似乎是和以前一樣
  • SELECT...FROM_TZ(CAST(created_at AS TIMESTAMP), 'UTC') AT TIME ZONE (SELECT TIMEZONE_CODE FROM REPORT_RECIPIENTS WHERE RECIPIENT_ID=$P{recipientId})...但這並不與工作GROUP BY陳述

[說明性編輯] 我需要在Report(* .jrxml)和獨立Jaspersoft Server實例的範圍內執行此操作。外部軟件是作弊的;-)

+0

爲什麼第三個選項不適用於分組?你不能加入獲取參數而不是子查詢嗎? – 2015-02-09 22:46:43

+0

當您調用報告(通過休息或通過url嵌入)時,您可以傳遞userTimezone參數,例如 – kayakpim 2015-02-10 11:56:16

+0

@AlexPoole我想是這樣,但是會變成很多'JOIN's ... plan B? – PixnBits 2015-02-10 16:59:36

回答

0

當您調用報告(通過休息或通過url嵌入)時,您可以傳遞userTimezone參數,例如

https://server/jasperserver-pro/flow.html?_flowId=dashboardRuntimeFlow&dashboardResource=%2Forganizations%2Forganization_1%2Freports%2FREPORT&userTimezone=Europe/Zurich

給出的鏈接是在的JasperServer報告的鏈接。默認情況下,服務器將採用登錄時指定的時區。您可以通過重定向到最後帶有& userTimezone = Europe/Zurich的網址來覆蓋此時間。

或者我相信如果你添加一個參數到名爲userTimezone的報表(在iReport中),你可以把它作爲輸入控件添加到你想要的時區並從服務器調用報表時輸入這個信息。

+0

增加了對該問題的說明。我將如何設置來自Jasper Server的查詢參數? – PixnBits 2015-02-10 16:51:58