簡體   English   中英

Jasper服務器動態日期參數用於報告計划

[英]Jasper server dynamic date parameters for reports scheduling

我有幾個使用每周開始日期和結束日期參數的報告。 目標是每周安排這些報告並通過電子郵件發送給客戶,同時允許他們登錄並在必要時選擇自己的日期。 在報表端,我具有帶有默認值表達式的startdate和enddate java.util日期參數,在服務器端,有2個具有確切名稱的日期類型輸入參數。

默認日期由Groovy腳本計算。 日期計算工作正常。 當您登錄Jasperserver並打開報告時,它們始終是正確的,並且報告可以手動正常運行。

但是,報告計划程序卡住了。 我將計划程序設置為在特定日期(下一個星期一00:05)開始,並將重復周期設置為“日歷”類型以重復每個月的星期一,在每個星期一00:05。 問題是盡管調度程序可以工作,但它只會使用當前的日期參數,而不會在第二次運行時刷新它們。 例如,如果我現在設置調度程序,那么下周一,我將把報告發送到我的電子郵件,其日期輸入為startdate:14-11-14,enddate:10-11-14。 這對於第一次運行是正確的。 但是,在接下來的所有星期中,它將使用這些特定參數,並且不會刷新日期。

我相信我要尋找的非常簡單。 我的報告可以正確計算所有內容,而Jasperserver所需要的只是每個星期一運行一次而無需存儲輸入參數。 如果僅在計划的時間運行它,那么一切都會很好,但是以某種方式,調度程序僅在設置調度程序的日期存儲正確的參數值!

我從事此工作已經很久了,很生氣,我找不到永久,可靠的解決方案。 任何幫助將不勝感激。

這可能已經是JasperReports Server更高版本中的一項新功能,但是我知道這將在4.5及更高版本中運行(並且可能也適用於舊版本)。 您將必須創建一個包含“字符串”的JAVA類,而該字符串必須預先填充“本月”和“過去10天”之類的內容。 根據傳入的字符串,它將返回正確的日期。 您可以使用這些預填充的字符串創建一個下拉參數。 您必須為每個輸入日期編寫該類中的方法。 以下是一些樣例的JRXML:

<parameter name="DateInputControl" class="java.lang.String">
    <defaultValueExpression><![CDATA["This Month"]]></defaultValueExpression>
</parameter>
<parameter name="QueryBeginDate" class="java.util.Date" isForPrompting="false">
    <defaultValueExpression> 
        <![CDATA[com.your.package.YourClass.getBeginDate($P{DateInputControl})]]>
    </defaultValueExpression>
</parameter>
<parameter name="QueryEndDate" class="java.util.Date" isForPrompting="false">
    <defaultValueExpression>   
        <![CDATA[com.your.package.YourClass.getEndDate($P{DateInputControl})]]> 
    </defaultValueExpression>
</parameter>

顯然,要完成的工作還不止此,但是希望這能使您步入正軌。 我強烈建議您在自定義JAVA類中使用JODA時間。

通過此設置,您可以使用所需的預設(例如“過去10天”)進行計划,計划的報告將使用滾動日期運行。 現在,報表的日期將始終基於當前日期是相對的(或動態的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM