2013-04-04 15 views
7

jak mogę sformatować pole daty (pole bazy danych) wyświetlany część tekstu w Jasper/iReports (4.5.1)Data formatowanie część tekstu w Jasper/iReports

wyświetlony za pośrednictwem pola tekstowego w raporcie. .. (używając Groovy proszę)

"Sub sumie na ten dzień:" + $ F (DEPOSIT_DATE)

próbowałem (new SimpleDateFormat("MM/dd/yyyy")).parse($F{DEPOSIT_DATE}) i otrzymuję komunikat o błędzie:

net.sf.jasperreports.engine.fill.JRExpressionEvalException:  
Error evaluating expression : Source text : (new SimpleDateFormat("MM/dd/yyyy")).parse($F{BANK_DATE})  

Co Chcę, aby wyświetlić w raporcie przedstawia się następująco ...

Sub sumie dla tej daty: MM/DD/YYYY - format ...

Odpowiedz

24

Spróbuj tego:

new SimpleDateFormat("MM/dd/yyyy").format($F{BANK_DATE}) 
3

Wydaje się, próbujesz parsować zamiast formatowania (jak wspomniano powyżej).

Można również użyć wzoru na karcie właściwości TextField do całkiem-print data, lub ręcznie zmienić wzorzec w jrxml:

<textField pattern="MM/dd/yyyy"> 
    <!-- here comes other generated data--> 
    <textFieldExpression><![CDATA[$F{BANK_DATE}]]></textFieldExpression> 
</textField> 
3

Zgadzam się z Mateuszem, textField z wzór perfrormes szybszy niż nowy SimpleDateFormat ("someFormat"). format ("jasperField"). Jest to ważne, gdy masz do czynienia z ogromnymi raportami. To jest mój przykład

<textField pattern="MM/dd/yyyy" isBlankWhenNull="true"> 
... 
    <textFieldExpression class="java.util.Date"><![CDATA[$F{certIssueDate}]]></textFieldExpression> 
</textField> 
0

jeśli pole Data jest wartość String, powiedzieć: "2014-11-20"

<field name="dateField" class="java.lang.String"/> 

następnie można to zrobić

<variable name="THE_DATE" class="java.util.Date"> 
<variableExpression> 
<![CDATA[new java.text.SimpleDateFormat("yyyy-mm-dd").parse($F{dateField})]]> 
</variableExpression> 
</variable> 

<textField pattern="dd/MM/yyyy" isBlankWhenNull="true"> 
    <reportElement x="0" y="0" width="88" height="20" uuid="47b41787-a8fd-44ea-bf96-7e5484e477fb"/> 
    <textElement textAlignment="Left" verticalAlignment="Middle"/> 
    <textFieldExpression><![CDATA[ $V{THE_DATE} ]]></textFieldExpression> 
</textField> 

Można ustawić wzorzec przez prawo klikając pole -> kliknij wzór pola -> Wybierz datę -> Wybierz wzór daty

można również zrobić to

<textField isBlankWhenNull="true"> 
    <reportElement x="0" y="0" width="88" height="20" uuid="47b41787-a8fd-44ea-bf96-7e5484e477fb"/> 
    <textElement textAlignment="Left" verticalAlignment="Middle"/> 
    <textFieldExpression class="java.util.Date"><![CDATA[ new java.text.SimpleDateFormat("dd/MM/yyyy").format(new java.text.SimpleDateFormat("yyyy-mm-dd").parse($F{dateField})) ]]></textFieldExpression> 
</textField> 

Jednak Jeżeli DateField jest typu Date następnie robi to poniżej jest po prostu w porządku.

<field name="dateField" class="java.util.Date"/> 
<textField pattern="dd/MM/yyyy" isBlankWhenNull="true"> 
     <reportElement x="0" y="0" width="88" height="20" uuid="47b41787-a8fd-44ea-bf96-7e5484e477fb"/> 
     <textElement textAlignment="Left" verticalAlignment="Middle"/> 
     <textFieldExpression><![CDATA[ $F{dateField} ]]></textFieldExpression> 
</textField> 
Powiązane problemy