Olá a todos,
acho que estou no lugar certo, e estou precisando muito de ajuda, desenvolvi um relatório mestre-detalhe (sub-report), estou usando a versão 3.7.5 no Netbeans. Configurei tudo conforme manda o figurino, no JasperReports ele roda e mostra todos os dados tanto no relatório pai quanto no filho. Porém quando tento rodar pela aplicação, somente os dados do relatório pai são mostrados, já procurei por toda a internet por horas a fio e nada de solução. Alguém pode me ajudar?
Abaixo segue a classe que estou usando no meu aplicativo:
public class Main {
public static void main(String[] args) throws NoSuchAlgorithmException, SQLException, ClassNotFoundException {
new Main().abrirRelatorioClientes();
}
public void abrirRelatorioClientes() throws ClassNotFoundException {
Date dateinicial = null;
Date datefinal = null;
try {
datefinal = new SimpleDateFormat("d/M/y").parse("10/12/2010");
dateinicial = new SimpleDateFormat("d/M/y").parse("07/12/2010");
} catch (ParseException ex) {
System.out.println("Erro: " + ex.getMessage());
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
InputStream inputStream = getClass().getResourceAsStream("Comandos.jasper");
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("nomeUsuario", "Well%");
parametros.put("datainicial", dateinicial);
parametros.put("datafinal", datefinal);
try {
try {
ReportUtils.openReport("Locações por Clientes", inputStream, parametros, ConnectionFactory.getInstancia());
} catch (JRException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (SQLException exc) {
}
}
}
Ambos os .jasper e a classe acima se encontram no mesmo diretório.
As configurações ficaram a seguinte:
Relatório pai:
Nome: Comandos
SUBREPORT_DIR: "/"
Parâmetros criados:
nomeUsuario: tipo Long
datainicial e datafinal: tipo Date
SubReport expression: getClass().getResource(“ComandosUser.jasper”)
Expression Class: java.net.URL
3 parameters:
Name Expression
datainicial $P{datainicial}
datafinal $P{datafinal}
idUsers $F{idUsers}
SQL:
select * from Users where Nome LIKE $P{nomeUsuario}
Fields:
<parameter name="nomeUsuario" class="java.lang.String"/>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["/"]]></defaultValueExpression>
</parameter>
<parameter name="datainicial" class="java.util.Date"/>
<parameter name="datafinal" class="java.util.Date"/>
<queryString>
<![CDATA[select * from Users where Nome LIKE $P{nomeUsuario}]]>
</queryString>
<field name="idUsers" class="java.lang.Long"/>
<field name="Login" class="java.lang.String"/>
<field name="Senha" class="java.lang.String"/>
<field name="Nome" class="java.lang.String"/>
<field name="Tipo" class="java.lang.String"/>
<field name="Data_Cad" class="java.sql.Timestamp"/>
Relatório Filho (Subreport):
Parameters:
<parameter name="datainicial" class="java.util.Date"/>
<parameter name="datafinal" class="java.util.Date"/>
<parameter name="idUsers" class="java.lang.Long"/>
Campos da tabela:
<field name="idcomandos" class="java.lang.Long"/>
<field name="idUsers" class="java.lang.Long"/>
<field name="nomebomba" class="java.lang.String"/>
<field name="datacomando" class="java.sql.Date"/>
<field name="horacomando" class="java.sql.Time"/>
<field name="statusdocomando" class="java.lang.String"/>
<field name="statusanterior" class="java.lang.String"/>
Query:
<queryString>
<![CDATA[SELECT
*
FROM
comandos
WHERE
idUsers = $P{idUsers} and datacomando BETWEEN $P{datainicial} and $P{datafinal}]]>
</queryString>
Quando rodo o arquivo veja o que aparece na Saída:
log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).
log4j:WARN Please initialize the log4j system properly.
Porém somente são mostrados os dados no relatório mestre.
Segue anexo meu xml:
xml Comandos.jrxml(report- pai)
<?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="report name" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="nomeUsuario" class="java.lang.String"/>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["/"]]></defaultValueExpression>
</parameter>
<parameter name="datainicial" class="java.util.Date"/>
<parameter name="datafinal" class="java.util.Date"/>
<queryString>
<![CDATA[select * from Users where Nome LIKE $P{nomeUsuario}]]>
</queryString>
<field name="idUsers" class="java.lang.Long"/>
<field name="Login" class="java.lang.String"/>
<field name="Senha" class="java.lang.String"/>
<field name="Nome" class="java.lang.String"/>
<field name="Tipo" class="java.lang.String"/>
<field name="Data_Cad" class="java.sql.Timestamp"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="43" splitType="Stretch"/>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="21" splitType="Stretch">
<staticText>
<reportElement x="6" y="0" width="100" height="20"/>
<textElement/>
<text><![CDATA[Login]]></text>
</staticText>
<staticText>
<reportElement x="120" y="0" width="100" height="20"/>
<textElement/>
<text><![CDATA[Nome]]></text>
</staticText>
<staticText>
<reportElement x="242" y="0" width="100" height="20"/>
<textElement/>
<text><![CDATA[Tipo]]></text>
</staticText>
<staticText>
<reportElement x="373" y="0" width="100" height="20"/>
<textElement/>
<text><![CDATA[Data_Cad]]></text>
</staticText>
<staticText>
<reportElement x="489" y="0" width="100" height="20"/>
<textElement/>
<text><![CDATA[idUsers]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="100" splitType="Stretch">
<textField>
<reportElement x="6" y="2" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{Login}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="120" y="2" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{Nome}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="242" y="2" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{Tipo}]]></textFieldExpression>
</textField>
<textField pattern="dd/MM/yyyy">
<reportElement x="373" y="2" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.sql.Timestamp"><![CDATA[$F{Data_Cad}]]></textFieldExpression>
</textField>
<subreport>
<reportElement x="0" y="22" width="555" height="78"/>
<subreportParameter name="datainicial">
<subreportParameterExpression><![CDATA[$P{datainicial}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="idUsers">
<subreportParameterExpression><![CDATA[$F{idUsers}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="datafinal">
<subreportParameterExpression><![CDATA[$P{datafinal}]]></subreportParameterExpression>
</subreportParameter>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
<subreportExpression class="java.net.URL"><![CDATA[getClass().getResource("ComandosUser.jasper")]]></subreportExpression>
</subreport>
<textField>
<reportElement x="489" y="8" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.Long"><![CDATA[$F{idUsers}]]></textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band height="45" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
</jasperReport>
xml ComandosUser.jrxml(subreport- Filho)
<?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="ComandosUser" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="datainicial" class="java.util.Date"/>
<parameter name="datafinal" class="java.util.Date"/>
<parameter name="idUsers" class="java.lang.Long"/>
<queryString>
<![CDATA[SELECT
*
FROM
comandos
WHERE
idUsers = $P{idUsers} and datacomando BETWEEN $P{datainicial} and $P{datafinal}]]>
</queryString>
<field name="idcomandos" class="java.lang.Long"/>
<field name="idUsers" class="java.lang.Long"/>
<field name="nomebomba" class="java.lang.String"/>
<field name="datacomando" class="java.sql.Date"/>
<field name="horacomando" class="java.sql.Time"/>
<field name="statusdocomando" class="java.lang.String"/>
<field name="statusanterior" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<columnHeader>
<band height="20" splitType="Stretch">
<staticText>
<reportElement x="12" y="0" width="100" height="20"/>
<textElement/>
<text><![CDATA[nomebomba]]></text>
</staticText>
<staticText>
<reportElement x="118" y="0" width="100" height="20"/>
<textElement/>
<text><![CDATA[datacomando]]></text>
</staticText>
<staticText>
<reportElement x="222" y="0" width="100" height="20"/>
<textElement/>
<text><![CDATA[horacomando]]></text>
</staticText>
<staticText>
<reportElement x="330" y="0" width="100" height="20"/>
<textElement/>
<text><![CDATA[statusanterior]]></text>
</staticText>
<staticText>
<reportElement x="446" y="0" width="100" height="20"/>
<textElement/>
<text><![CDATA[statusdocomando]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="22" splitType="Stretch">
<textField>
<reportElement x="12" y="2" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{nomebomba}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="118" y="2" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.util.Date"><![CDATA[$F{datacomando}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="222" y="2" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.sql.Time"><![CDATA[$F{horacomando}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="330" y="2" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{statusanterior}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="446" y="2" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{statusdocomando}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
Alguém tem pode me ajudar.
Abaixo segue link das fotos da tela para ilustração: http://dl.dropbox.com/u/8256868/ireport.zip
Obs.: Adicionei todas as bibliotecas necessárias, pelo menos eu acho 
(commons-beanutils-1.5.jar; commons-collections-2.1.jar; commons-digester-
1.7.jar; commons-logging-1.0.2.jar; commons-logging-api-1.0.2.jar; etc…)
Agradeço desde já,
Obrigado.