2016-01-21 81 views
1

我有一個主要的報告,其中查詢詳細信息帶中的數據庫的項目列表,另一個細節帶包含一個子報告,每個記錄一次呈現。我希望這個第二個細節帶僅在其內的子報告不是空的時才被渲染。如何僅在樂隊內部的子報告不爲空時呈現碧玉報告的報告樂隊?

我試圖讓從子報告REPORT_COUNT到返回變量,並設置Print when expression參數作爲$V{SUBREPORT_ITEMS_ROW_COUNT} != null && $V{SUBREPORT_ITEMS_ROW_COUNT} > 0但它看起來像樂隊之後被渲染計算返回變量,所以不能看到變量,即使它正確返回。

我還能做什麼?

UPDATE 這裏是主報告的JRXML:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Created with Jaspersoft Studio version 6.1.0.final using JasperReports Library version 6.1.0 --> 
<!-- 2016-01-21T10:03:49 --> 
<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="PlanoDeContasDetalhado" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="9fa6ae6c-0db5-4324-a65d-f0d61a8f30bb"> 
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="SCA Banco de dados bagual"/> 
    <style name="NIVEL"> 
     <conditionalStyle> 
      <conditionExpression><![CDATA[$F{PLCTA15COD}.trim().length() == 1]]></conditionExpression> 
      <style mode="Opaque" backcolor="#CFCFCF" fontSize="15" isBold="true" isItalic="true"/> 
     </conditionalStyle> 
    </style> 
    <parameter name="EMPRICOD" class="java.lang.Integer"/> 
    <parameter name="ID_SETOR" class="java.lang.Integer"/> 
    <parameter name="CAMPO_DATA" class="java.lang.String"/> 
    <parameter name="DATA1" class="java.util.Date"/> 
    <parameter name="DATA2" class="java.util.Date"/> 
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> 
     <defaultValueExpression><![CDATA["C:\\Users\\Mateus\\Documents\\NetBeansProjects\\AtualyRelatorios\\jasper\\"]]></defaultValueExpression> 
    </parameter> 
    <parameter name="CON_ITENS" class="java.sql.Connection" isForPrompting="false"/> 
    <queryString> 
     <![CDATA[select 
plcta15cod, 
plcta30codedit, 
plcta60descr 
from planodecontas 
order by plcta15cod]]> 
    </queryString> 
    <field name="PLCTA15COD" class="java.lang.String"/> 
    <field name="PLCTA30CODEDIT" class="java.lang.String"/> 
    <field name="PLCTA60DESCR" class="java.lang.String"/> 
    <title> 
     <band height="82" splitType="Stretch"> 
      <staticText> 
       <reportElement x="0" y="0" width="510" height="26" uuid="2fa3702f-ff66-41a6-81e9-7dbbbd791233"/> 
       <textElement verticalAlignment="Bottom"> 
        <font size="18" isBold="true"/> 
       </textElement> 
       <text><![CDATA[Detalhamento do plano de contas]]></text> 
      </staticText> 
      <staticText> 
       <reportElement x="0" y="26" width="510" height="15" uuid="f23a5d3d-a05d-4e9c-9053-492e635cde26"/> 
       <textElement> 
        <font size="11" isBold="false"/> 
       </textElement> 
       <text><![CDATA[Receitas & Despesas]]></text> 
      </staticText> 
     </band> 
    </title> 
    <detail> 
     <band height="18" splitType="Stretch"> 
      <textField> 
       <reportElement style="NIVEL" x="0" y="0" width="80" height="18" uuid="2db15faa-e12e-4fc3-a5ae-956d454e50da"/> 
       <textElement verticalAlignment="Middle"> 
        <font size="8"/> 
       </textElement> 
       <textFieldExpression><![CDATA[$F{PLCTA30CODEDIT}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement style="NIVEL" x="80" y="0" width="475" height="18" uuid="bbcbea9e-2b83-4cd5-aa1e-2daea32f33a0"/> 
       <textElement verticalAlignment="Middle"> 
        <font size="8"/> 
       </textElement> 
       <textFieldExpression><![CDATA[$F{PLCTA15COD}.trim().replaceAll(".","-") 
+ $F{PLCTA15COD}.trim().replaceAll(".","-") 
+ $F{PLCTA60DESCR}]]></textFieldExpression> 
      </textField> 
     </band> 
     <band height="4"> 
      <subreport> 
       <reportElement x="-20" y="0" width="595" height="4" uuid="572867ad-8bb8-4664-9ae9-a1120c102430"/> 
       <subreportParameter name="EMPRICOD"> 
        <subreportParameterExpression><![CDATA[$P{EMPRICOD}]]></subreportParameterExpression> 
       </subreportParameter> 
       <subreportParameter name="ID_SETOR"> 
        <subreportParameterExpression><![CDATA[$P{ID_SETOR}]]></subreportParameterExpression> 
       </subreportParameter> 
       <subreportParameter name="CAMPO_DATA"> 
        <subreportParameterExpression><![CDATA[$P{CAMPO_DATA}]]></subreportParameterExpression> 
       </subreportParameter> 
       <subreportParameter name="DATA1"> 
        <subreportParameterExpression><![CDATA[$P{DATA1}]]></subreportParameterExpression> 
       </subreportParameter> 
       <subreportParameter name="DATA2"> 
        <subreportParameterExpression><![CDATA[$P{DATA2}]]></subreportParameterExpression> 
       </subreportParameter> 
       <subreportParameter name="PLCTA15COD"> 
        <subreportParameterExpression><![CDATA[$F{PLCTA15COD}]]></subreportParameterExpression> 
       </subreportParameter> 
       <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
       <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "PlanoDeContasDetalhadoItens.jasper"]]></subreportExpression> 
      </subreport> 
     </band> 
    </detail> 
</jasperReport> 
+1

您使用的是哪種數據源?您是否在細節帶或僅有子報表中有其他元素(不應渲染)?你是否設法用一些jrxml給出一個簡短的[mcve]? –

+0

SQL數據源。子報表中沒有其他元素,只是子報表。要使用主報告JRXML –

+1

AFIK來更新問題,在子報表中實際執行查詢之前(以及由於已經創建了4像素的細節),您無法獲得該信息。你的工作可以是(在主報告中創建一個字段,如果在子報告中有記錄,加入子報表查詢表)或使詳細信息帶僅爲1px並與之一起生活... –

回答

1

你想創建一個主詳細報告?如果是的話(我不知道我是否誤解了你的問題,但這是我的答案):我曾經在同一頻段(細節)中擁有子報表,並將主參數傳遞給子報表,並將查詢傳遞給子報表將使用它,所以如果主參數沒有進入主查詢,它不會在子報表中顯示任何內容。 我希望這對你有用。

+0

感謝超級馬里奧,這樣的子報告將不會顯示,但子報表所在的主報告上的樂隊仍然可見,這就是我想要避免的。 –