2016-03-23 13 views
0

Aşağıdaki durum var: my veritabanındaİç grup nasıl gruplanır?

Her satır böyle, (kullanıcı tarafından tercih herhangi bir harf olabilir) bir GRUBU MEKTUP vardır:

ROW1 - A 
    ROW2 - A 
    ROW3 - F 
    ROW4 - F 
    ROW5 - K 

Yani, raporda yukarıdaki Exemple içinde olmalıdır Bu gibi COUNT ile SÜTUN altbilgideki DETAY BAND satır ve GRUPLARI MEKTUPLARI gösterir:

IN DETAIL: 
    ROW1 
    ROW2 
    ROW3 
    ROW4 
    ROW5 

    IN FOOTER BAND: 
    A - 2 
    F - 2 
    K - 1 

ben bunu nasıl yapabilirim?

cevap

2

footer bandında bir alt rapor ekleyebilirsiniz, bu gruplandırmanın alt raporda nasıl yapılabileceğini gösterir. çıkış Ancak

result verir

jrxml

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="subreport" pageWidth="555" pageHeight="842" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="20" bottomMargin="20" uuid="c1d9b4b7-6162-4b17-b871-3cf3b867d1ef"> 
    <queryString> 
     <![CDATA[]]> 
    </queryString> 
    <field name="row" class="java.lang.String"/> 
    <field name="letter" class="java.lang.String"/> 
    <variable name="letter_cnt" class="java.lang.Integer" resetType="Group" resetGroup="testGroup" calculation="Count"> 
     <variableExpression><![CDATA[$F{letter}]]></variableExpression> 
     <initialValueExpression><![CDATA[0]]></initialValueExpression> 
    </variable> 
    <group name="testGroup"> 
     <groupExpression><![CDATA[$F{letter}]]></groupExpression> 
     <groupHeader> 
      <band height="20"> 
       <textField> 
        <reportElement x="0" y="0" width="100" height="20" uuid="f626bfda-d44c-491e-915b-d4b078e6f5cf"/> 
        <textFieldExpression><![CDATA[$F{letter}]]></textFieldExpression> 
       </textField> 
       <textField evaluationTime="Group" evaluationGroup="testGroup"> 
        <reportElement x="100" y="0" width="100" height="20" uuid="6181956b-527f-4dca-8144-1846b4b8ef99"/> 
        <textFieldExpression><![CDATA[$V{letter_cnt}]]></textFieldExpression> 
       </textField> 
      </band> 
     </groupHeader> 
    </group> 
</jasperReport> 

olarak, bu zaten ana yinelenebiliyorsa edilmiştir doğrudan yana ana rapor veri kaynağı kullanamaz detail bandını rapor et, dolayısıyla son kayıtta.

verileri sağlamak için bir bağlantısı kullanıyorsanız, doğrudan istenen etmiş sonucu (sum ve group by) sorgulamak için öneririm.

kullandığınız Bir sen kullanarak veri kaynağı tekrar başlatılana edebilirsiniz JRBeanCollectionDataSource olarak JRDataSource:

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{REPORT_DATA_SOURCE}.getData()) 

dolayısıyla bu Bağlantıyı kullanıyorum

+0

alt rapor geçmek veri kaynağı olan ama istiyorum $ P {REPORT_DATA_SOURCE} kullanmak mümkün mü? – RonaldoLanhellas

+0

@Scientist Veri kaynağında moveFirst() öğesini çağırmanız gerekir, bu kesinlikle bir java sınıfından jrxml hmm içinde yapılabilir (void verir) Bunun üzerinde bazı testler yapmam gerekecek. –