2016-01-21 80 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

感谢超级马里奥,这样的子报告将不会显示,但子报表所在的主报告上的乐队仍然可见,这就是我想要避免的。 –