2012-03-22 105 views
7

我是iReport。所以我想根据数据做一个简单的报告。iReport:获取表格的多个副本

我的问题是,当我的行少于细节带的大小,整个表得到重复的详细带,我不想再次。如果我的行大约是5,那么相同的表被复制4次详细的乐队,而不仅仅是桌子,而是我详细列出的每一件事情。它会一直重复,直到细节带限制来临。

所以我犯了一些错误,或者我必须在iReport中设置一些细节带的属性?

请帮我朋友。提前致谢。

这是生成的结果:

Generated result

这里是我的JRXML代码:

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport language="groovy" bottomMargin="20" topMargin="20" rightMargin="20" leftMargin="20" columnWidth="555" 
       whenNoDataType="AllSectionsNoDetail" pageHeight="842" pageWidth="595" name="test" 
       xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns="http://jasperreports.sourceforge.net/jasperreports"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <style name="table"> 
     <box> 
      <pen lineColor="#000000" lineWidth="1.0"/> 
     </box> 
    </style> 
    <style name="table_TH" backcolor="#F0F8FF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table_CH" backcolor="#BFE1FF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table_TD" backcolor="#FFFFFF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 1"> 
     <box> 
      <pen lineColor="#000000" lineWidth="1.0"/> 
     </box> 
    </style> 
    <style name="table 1_TH" backcolor="#F0F8FF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 1_CH" backcolor="#BFE1FF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 1_TD" backcolor="#FFFFFF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 2"> 
     <box> 
      <pen lineColor="#000000" lineWidth="1.0"/> 
     </box> 
    </style> 
    <style name="table 2_TH" backcolor="#F0F8FF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 2_CH" backcolor="#BFE1FF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 2_TD" backcolor="#FFFFFF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 3"> 
     <box> 
      <pen lineColor="#000000" lineWidth="1.0"/> 
     </box> 
    </style> 
    <style name="table 3_TH" backcolor="#F0F8FF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 3_CH" backcolor="#BFE1FF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 3_TD" backcolor="#FFFFFF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 4"> 
     <box> 
      <pen lineColor="#000000" lineWidth="1.0"/> 
     </box> 
    </style> 
    <style name="table 4_TH" backcolor="#F0F8FF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 4_CH" backcolor="#BFE1FF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 4_TD" backcolor="#FFFFFF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 5"> 
     <box> 
      <pen lineColor="#000000" lineWidth="1.0"/> 
     </box> 
    </style> 
    <style name="table 5_TH" backcolor="#F0F8FF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 5_CH" backcolor="#BFE1FF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <style name="table 5_TD" backcolor="#FFFFFF" mode="Opaque"> 
     <box> 
      <pen lineColor="#000000" lineWidth="0.5"/> 
     </box> 
    </style> 
    <subDataset name="a"> 
     <parameter name="sem" class="java.lang.String"> 
      <defaultValueExpression> 
       <![CDATA[]]> 
      </defaultValueExpression> 
     </parameter> 
     <queryString> 
      <![CDATA[select final."M" as "ENROLLMENT",sem_batch.sem,sem_batch.batch,final."N" as "TTL_WKDY",final."O" as "PRESENT",round(((100*"O")/"N"),2) as "PERCENTAGE" from sem_batch, (select m."Std_id" as "M",l."Batch" as "L",l."Btch" as "N",m."Std" as "O" from (select count(b.batch_id) as "Btch",b.batch_id as "Batch" from batch_wkday b where b.batch_id like $P{sem} group by batch_id) l, (select count(a.std_id) as "Std",a.std_id as "Std_id",s.batch_id as "Batch" from attendance a,student_detail s where a.std_id=s.std_id and s.batch_id like $P{sem} group by a.std_id,s.batch_id) m where l."Batch"=m."Batch") final where final."L"=sem_batch.batch_id]]> 
     </queryString> 
     <field name="ENROLLMENT" class="java.math.BigDecimal"/> 
     <field name="SEM" class="java.math.BigDecimal"/> 
     <field name="BATCH" class="java.lang.String"/> 
     <field name="TTL_WKDY" class="java.math.BigDecimal"/> 
     <field name="PRESENT" class="java.math.BigDecimal"/> 
     <field name="PERCENTAGE" class="java.math.BigDecimal"/> 
     <group name="ENROLLMENT"> 
      <groupExpression> 
       <![CDATA[$F{ENROLLMENT}]]> 
      </groupExpression> 
     </group> 
    </subDataset> 
    <parameter name="SEM" class="java.lang.String"/> 
    <queryString> 
     <![CDATA[select * from sem_batch]]> 
    </queryString> 
    <field name="SEM" class="java.math.BigDecimal"/> 
    <field name="BATCH" class="java.lang.String"/> 
    <field name="BATCH_ID" class="java.lang.String"/> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <title> 
     <band splitType="Stretch" height="69"> 
      <staticText> 
       <reportElement height="53" width="421" y="0" x="68"/> 
       <textElement markup="none" textAlignment="Center"> 
        <font size="22"/> 
       </textElement> 
       <text> 
        <![CDATA[ATTENDANCE - CLASS ]]> 
       </text> 
      </staticText> 
     </band> 
    </title> 
    <pageHeader> 
     <band splitType="Stretch"/> 
    </pageHeader> 
    <columnHeader> 
     <band splitType="Stretch" height="61"> 
      <staticText> 
       <reportElement height="20" width="53" y="0" x="0"/> 
       <textElement> 
        <font size="12"/> 
       </textElement> 
       <text> 
        <![CDATA[SEM]]> 
       </text> 
      </staticText> 
      <staticText> 
       <reportElement height="20" width="53" y="20" x="0"/> 
       <textElement> 
        <font size="12"/> 
       </textElement> 
       <text> 
        <![CDATA[DATE]]> 
       </text> 
      </staticText> 
      <staticText> 
       <reportElement height="20" width="10" y="0" x="58"/> 
       <textElement/> 
       <text> 
        <![CDATA[:]]> 
       </text> 
      </staticText> 
      <staticText> 
       <reportElement height="20" width="10" y="20" x="58"/> 
       <textElement/> 
       <text> 
        <![CDATA[:]]> 
       </text> 
      </staticText> 
      <textField pattern="dd/MM/yyyy"> 
       <reportElement height="20" width="100" y="20" x="68"/> 
       <textElement/> 
       <textFieldExpression> 
        <![CDATA[new java.util.Date()]]> 
       </textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement height="20" width="100" y="0" x="68"/> 
       <textElement/> 
       <textFieldExpression> 
        <![CDATA[$P{SEM}]]> 
       </textFieldExpression> 
      </textField> 
     </band> 
    </columnHeader> 
    <detail> 
     <band splitType="Stretch" height="125"> 
      <componentElement> 
       <reportElement height="50" width="360" y="0" x="35" style="table 5" key="table 5"/> 
       <jr:table 
         xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" 
         xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components"> 
        <datasetRun subDataset="a"> 
         <datasetParameter name="sem"> 
          <datasetParameterExpression> 
           <![CDATA[$P{SEM}+'%']]> 
          </datasetParameterExpression> 
         </datasetParameter> 
         <connectionExpression> 
          <![CDATA[$P{REPORT_CONNECTION}]]> 
         </connectionExpression> 
        </datasetRun> 
        <jr:column width="118"> 
         <jr:columnHeader height="23" style="table 5_CH" rowSpan="1"> 
          <staticText> 
           <reportElement height="20" width="118" y="0" x="0"/> 
           <textElement textAlignment="Center"> 
            <font size="14" isBold="false"/> 
           </textElement> 
           <text> 
            <![CDATA[ENROLLMENT]]> 
           </text> 
          </staticText> 
         </jr:columnHeader> 
         <jr:detailCell height="20" style="table 5_TD" rowSpan="1"> 
          <textField> 
           <reportElement height="20" width="118" y="0" x="0"/> 
           <textElement textAlignment="Center"> 
            <font size="10" isBold="false"/> 
           </textElement> 
           <textFieldExpression> 
            <![CDATA[$F{ENROLLMENT}]]> 
           </textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
        <jr:column width="90"> 
         <jr:columnHeader height="23" style="table 5_CH" rowSpan="1"> 
          <staticText> 
           <reportElement height="20" width="90" y="0" x="0"/> 
           <textElement textAlignment="Center"> 
            <font size="14"/> 
           </textElement> 
           <text> 
            <![CDATA[SEM]]> 
           </text> 
          </staticText> 
         </jr:columnHeader> 
         <jr:detailCell height="20" style="table 5_TD" rowSpan="1"> 
          <textField> 
           <reportElement height="20" width="90" y="0" x="0"/> 
           <textElement textAlignment="Center"> 
            <font size="10"/> 
           </textElement> 
           <textFieldExpression> 
            <![CDATA[$F{SEM}]]> 
           </textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
        <jr:column width="90"> 
         <jr:columnHeader height="23" style="table 5_CH" rowSpan="1"> 
          <staticText> 
           <reportElement height="20" width="90" y="0" x="0"/> 
           <textElement textAlignment="Center"> 
            <font size="14"/> 
           </textElement> 
           <text> 
            <![CDATA[BATCH]]> 
           </text> 
          </staticText> 
         </jr:columnHeader> 
         <jr:detailCell height="20" style="table 5_TD" rowSpan="1"> 
          <textField> 
           <reportElement height="20" width="90" y="0" x="0"/> 
           <textElement textAlignment="Center"/> 
           <textFieldExpression> 
            <![CDATA[$F{BATCH}]]> 
           </textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
        <jr:column width="90"> 
         <jr:columnHeader height="23" style="table 5_CH" rowSpan="1"> 
          <staticText> 
           <reportElement height="20" width="90" y="0" x="0"/> 
           <textElement textAlignment="Center"> 
            <font size="14"/> 
           </textElement> 
           <text> 
            <![CDATA[PRESENT]]> 
           </text> 
          </staticText> 
         </jr:columnHeader> 
         <jr:detailCell height="20" style="table 5_TD" rowSpan="1"> 
          <textField> 
           <reportElement height="20" width="90" y="0" x="0"/> 
           <textElement textAlignment="Center"/> 
           <textFieldExpression> 
            <![CDATA[$F{PRESENT}]]> 
           </textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
        <jr:column width="90"> 
         <jr:columnHeader height="23" style="table 5_CH" rowSpan="1"> 
          <staticText> 
           <reportElement height="20" width="90" y="0" x="0"/> 
           <textElement textAlignment="Center"> 
            <font size="14"/> 
           </textElement> 
           <text> 
            <![CDATA[PERCENTAGE]]> 
           </text> 
          </staticText> 
         </jr:columnHeader> 
         <jr:detailCell height="20" style="table 5_TD" rowSpan="1"> 
          <textField> 
           <reportElement height="20" width="90" y="0" x="0"/> 
           <textElement textAlignment="Center"/> 
           <textFieldExpression> 
            <![CDATA[$F{PERCENTAGE}]]> 
           </textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
       </jr:table> 
      </componentElement> 
     </band> 
    </detail> 
    <columnFooter> 
     <band splitType="Stretch"/> 
    </columnFooter> 
    <pageFooter> 
     <band splitType="Stretch" height="54"> 
      <textField> 
       <reportElement height="20" width="100" y="16" x="227"/> 
       <textElement textAlignment="Center"/> 
       <textFieldExpression> 
        <![CDATA[$V{PAGE_NUMBER}]]> 
       </textFieldExpression> 
      </textField> 
     </band> 
    </pageFooter> 
    <summary> 
     <band splitType="Stretch" height="42"/> 
    </summary> 
</jasperReport> 
+0

嗨,欢迎来到SO。你能更详细地解释你的设计报告格式吗?有一些解释的图片或JRXML文件会很有帮助。 – 2012-03-22 03:07:31

+0

是啊当然...在这里我附加文件,以便您可以看到jrxml文件以及PDF文件也... – 2012-03-22 03:28:45

+1

我无法读取您的jrxml文件,它不适用于priview。你可以用代码块直接粘贴到你的文章中。 – 2012-03-22 03:59:25

回答

9

你应该把table组件到Title带(或成Summary band,for例子)。不进Detail带。

+0

嘿,最后我得到了完整的解决方案.. – 2012-04-01 07:11:53

+0

当我这样做时,我的报告预览中只有很大的空间。我能做些什么来防止这种情况发生? – 2014-04-14 06:48:35

0

嘿,我得到了我的问题的解决方案。如果在主查询中返回多行,则会发生这种情况。尝试给出返回不超过一行的查询。像“从双选择1”。该解决方案解决了我的问题

+0

在哪里写这个“从双选择1”? – 2012-12-18 09:28:48

+0

在主报告查询中写入此查询。右键单击报告后可以找到该查询编辑器,然后转到编辑查询选项。 – 2013-01-09 07:23:15

8

选择表格属性,并在表中添加 printWhenExpression$ V {} REPORT_COUNT == 1我们避免在iREPORT分享到人人repetation表值。

3

根据以前的答案回答,我可以使用Detail部分的表格和以下属性设置,以避免在文档结尾处生成重复的或空白的页面。

详细乐队 - >设置打印时表达与价值$ V {} REPORT_COUNT == 1 表元素 - >设置打印当表达 $ V {} REPORT_COUNT == 1