[RESOLVIDO] SubRelatório no iReport

Boa Noite Galera…!

Estou desesperadaaaaa… Estou com um problema no desenvolvimento do meu TCC…

Alguem poderia por misericórdia me ajudar a montar um subrelatorio do iReport e depois a passar isso para o Netbeans?

É o seguinte: tenho uma classe de professores, e tenho opinioes desses professores. Pode ter duas ou mais opinioes de cada professor…

No principal terei os dados do professor e no sub essas opinioes.

Já fiz o principal… e o sub, mas na hora de juntá-los ele reclama da variável de ligação entre esses dois relatorios… aaaaaaaaaaaaahhhh… Socoooooorroooooooo…

Agradeço desde já a atencao de vcs…

Bjoooo…

Ola, teria o codigo de como está sendo implementado o seu relatorio para ter uma ideia?

Qual o erro que está sendo gerado? Você esta passando corretamente o caminho do seu subRelatório?

Você está utilizando collection ou query para gerar o relatorio?

Tente especificar melhor oque está ocorrendo, se puder, coloque o codigo que contem o problema e tb os jrxml do relatorio.

Abraço.

rdmardegam, Vou tentar ser mais clara…

é o seguinte:

Tenho o relatorio A principal, certo que mostra o nome do professor somente…

Criei um outro relatório B sem título, só com dados, e coloquei o campo de opinião do professor… só aparece a opniao do professor…

Lembrando que os dois relatórios acima estão funcionando…

Aí chega o meu dilema…

Coloquei um ícone de subrelatório, só que eu não sei como fazer aquelas configurações…

Então coloco o que eu sei e monto o relatorio B dentro do relatorio A, porém qdo eu rodo, ele abre uma janelinha reclamando uma variável que eu não sei o que é: SUBREPORT_DIR com espaço pra digitar…

Porém executa direitinho mas sem filtrar a opinião do professor.

Por exemplo: Tenho o professor ZXY com duas opiniões e o professor XPTO com 3 opiniões…

Qdo executo pararece o professor ZXY com todas as 5 opinioes e o professor XPTo com as mesmas 5 opinioes…

Eu já perquisei tudos os lugares possíveis e não encontrei nada que me ajudasse…

Help me pleeeeease!!!

Certo, vc está exportando para pdf?
Tem como colocar o codigo e o jrxml para facilitar?

Como n sei como está sua estrutura de exportacao, vou montar meio que uma que pensei aqui exemplo.

Você vai ter a classe Professor e a classe Opniao.
Onde a class Professor possui uma colecao da classe opiniao certo.

Entao o relatorio principal vai percorrer a colecao dos professores e o subRelatorio vai percorrer a colecao das opinioes dos professores.

Enfim esse SUBREPORT_DIR é o seguinte, existe seu relatorio principal certo, chamaremos ele de A.jasper
E tem o seu subRelatorio, chamaremos de B.jasper.

Esse SUBREPORT_DIR seria o diretorio que se encontra o B.jasper, se ele estiver no diretorio “c:\Relatorios” vc deve passar a informacao “c:\Relatorios” para que o relatorio principal “A.jasper” saiba onde encontrar o seu subrelatorio.

Enfim, é meio complicado de explicar e to correndo aqui agora hehe, manda seu codigo e os jrxml que fica mais facil de ver onde vc está errando.

Se voce disse q ja ta gerando os relatorios so n atualiza as inforacoes deve ser coisa simples

Abraço.

rdmardegam, olha o código aí…

[color=blue][b][i]Me ajude por favor…

Eu não estou exportando para pdf não…

O SUBREPORT_DIR está como endereço direitinho… num é iso não!![/i][/b][/color]

RelRestrições.jrxml (esse é o relatório A)

[code]<?xml version="1.0" encoding="UTF-8" ?>






<parameter name="SUBREPORT_DIR" isForPrompting="true" class="java.lang.String">
	<defaultValueExpression ><![CDATA["C:\\Users\\cliente\\Documents\\NetBeansProjects\\SCIHE\\relatorios\\"]]></defaultValueExpression>
</parameter>
<parameter name="cdprofessor" isForPrompting="false" class="java.lang.Integer">
	<defaultValueExpression ><![CDATA[$F{cdprofessor}]]></defaultValueExpression>
</parameter>
<queryString><![CDATA[SELECT p.cdprofessor, status, nmprofessor, sgcurso, nmcurso, motivo, date_format(dshora, '%h:%i'),  nmdia 

FROM tbprofessor p, tbcurso c, tbrestricao r, tbhora h, tbdia d
WHERE status = 'true’
AND p.cdcurso = c.cdcurso
AND r.diasemana = d.cddia
AND r.horario = h.cdhora
AND p.cdprofessor = r.cdprofessor
ORDER BY nmprofessor, nmdia, dshora]]>

<field name="cdprofessor" class="java.lang.Integer"/>
<field name="status" class="java.lang.String"/>
<field name="nmprofessor" class="java.lang.String"/>
<field name="sgcurso" class="java.lang.String"/>
<field name="nmcurso" class="java.lang.String"/>
<field name="motivo" class="java.lang.String"/>
<field name="date_format(dshora, '%h:%i')" class="java.lang.String"/>
<field name="nmdia" class="java.lang.String"/>

	<background>
		<band height="0"  isSplitAllowed="true" >
		</band>
	</background>
	<title>
		<band height="0"  isSplitAllowed="true" >
		</band>
	</title>
	<pageHeader>
		<band height="91"  isSplitAllowed="true" >
			<line direction="TopDown">
				<reportElement
					x="0"
					y="90"
					width="536"
					height="0"
					key="line-1"/>
				<graphicElement stretchType="NoStretch"/>
			</line>
			<image  evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
				<reportElement
					x="6"
					y="4"
					width="52"
					height="41"
					key="image-1"/>
				<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
				<graphicElement stretchType="NoStretch"/>
				<imageExpression class="java.lang.String"><![CDATA["C:\\Users\\cliente\\Documents\\NetBeansProjects\\Imagens\\Logo.jpg"]]></imageExpression>
			</image>
			<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
				<reportElement
					x="6"
					y="50"
					width="525"
					height="35"
					key="textField-1"/>
				<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Verdana" size="14"/>
				</textElement>
			<textFieldExpression   class="java.lang.String"><![CDATA["Restrições - "+$F{nmcurso}]]></textFieldExpression>
			</textField>
		</band>
	</pageHeader>
	<columnHeader>
		<band height="30"  isSplitAllowed="true" >
			<staticText>
				<reportElement
					x="7"
					y="6"
					width="181"
					height="19"
					key="staticText-2"/>
				<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
				<textElement textAlignment="Left">
					<font fontName="Verdana" pdfFontName="Helvetica-Bold" size="12" isBold="true"/>
				</textElement>
			<text><![CDATA[Professor]]></text>
			</staticText>
			<staticText>
				<reportElement
					x="193"
					y="6"
					width="172"
					height="19"
					key="staticText-3"/>
				<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
				<textElement textAlignment="Left">
					<font fontName="Verdana" pdfFontName="Helvetica-Bold" size="12" isBold="true"/>
				</textElement>
			<text><![CDATA[Restrições]]></text>
			</staticText>
			<staticText>
				<reportElement
					x="368"
					y="6"
					width="98"
					height="19"
					key="staticText-4"/>
				<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
				<textElement textAlignment="Left">
					<font fontName="Verdana" pdfFontName="Helvetica-Bold" size="12" isBold="true"/>
				</textElement>
			<text><![CDATA[Dia]]></text>
			</staticText>
			<staticText>
				<reportElement
					x="469"
					y="6"
					width="60"
					height="19"
					key="staticText-6"/>
				<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
				<textElement textAlignment="Left">
					<font fontName="Verdana" pdfFontName="Helvetica-Bold" size="12" isBold="true"/>
				</textElement>
			<text><![CDATA[Horário]]></text>
			</staticText>
		</band>
	</columnHeader>
	<detail>
		<band height="50"  isSplitAllowed="true" >
			<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
				<reportElement
					x="7"
					y="5"
					width="181"
					height="18"
					key="textField"/>
				<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
				<textElement>
					<font fontName="Verdana" size="12"/>
				</textElement>
			<textFieldExpression   class="java.lang.String"><![CDATA[$F{nmprofessor}]]></textFieldExpression>
			</textField>
			<subreport  isUsingCache="true">
				<reportElement
					x="183"
					y="7"
					width="346"
					height="39"
					key="subreport-1"/>
				<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
				<subreportExpression  class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "subRelRestricoes.jasper"]]></subreportExpression>
			</subreport>
		</band>
	</detail>
	<columnFooter>
		<band height="28"  isSplitAllowed="true" >
			<staticText>
				<reportElement
					x="474"
					y="7"
					width="24"
					height="17"
					key="staticText-5"/>
				<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
				<textElement>
					<font/>
				</textElement>
			<text><![CDATA[pág.]]></text>
			</staticText>
			<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
				<reportElement
					x="501"
					y="7"
					width="26"
					height="18"
					key="textField"/>
				<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
				<textElement>
					<font/>
				</textElement>
			<textFieldExpression   class="java.lang.Integer"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
			</textField>
			<line direction="TopDown">
				<reportElement
					x="2"
					y="2"
					width="536"
					height="0"
					key="line-2"/>
				<graphicElement stretchType="NoStretch"/>
			</line>
		</band>
	</columnFooter>
	<pageFooter>
		<band height="0"  isSplitAllowed="true" >
		</band>
	</pageFooter>
	<summary>
		<band height="0"  isSplitAllowed="true" >
		</band>
	</summary>
[/code]

subRelRestrições.jrxml (esse é o relatório B)

[code]<?xml version="1.0" encoding="UTF-8" ?>






<queryString><![CDATA[SELECT p.cdprofessor, status, nmprofessor, sgcurso, nmcurso, motivo, date_format(dshora, '%h:%i'),  nmdia 

FROM tbprofessor p, tbcurso c, tbrestricao r, tbhora h, tbdia d
WHERE status = 'true’
AND p.cdcurso = c.cdcurso
AND r.diasemana = d.cddia
AND r.horario = h.cdhora
AND p.cdprofessor = r.cdprofessor
ORDER BY nmprofessor, nmdia, dshora]]>

<field name="cdprofessor" class="java.lang.Integer"/>
<field name="status" class="java.lang.String"/>
<field name="nmprofessor" class="java.lang.String"/>
<field name="sgcurso" class="java.lang.String"/>
<field name="nmcurso" class="java.lang.String"/>
<field name="motivo" class="java.lang.String"/>
<field name="date_format(dshora, '%h:%i')" class="java.lang.String"/>
<field name="nmdia" class="java.lang.String"/>

	<background>
		<band height="0"  isSplitAllowed="true" >
		</band>
	</background>
	<title>
		<band height="0"  isSplitAllowed="true" >
		</band>
	</title>
	<pageHeader>
		<band height="0"  isSplitAllowed="true" >
		</band>
	</pageHeader>
	<columnHeader>
		<band height="0"  isSplitAllowed="true" >
		</band>
	</columnHeader>
	<detail>
		<band height="50"  isSplitAllowed="true" >
			<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
				<reportElement
					x="4"
					y="3"
					width="169"
					height="44"
					key="textField-1"/>
				<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
				<textElement>
					<font fontName="Verdana" size="12"/>
				</textElement>
			<textFieldExpression   class="java.lang.String"><![CDATA[$F{motivo}]]></textFieldExpression>
			</textField>
			<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
				<reportElement
					x="175"
					y="3"
					width="97"
					height="18"
					key="textField-2"/>
				<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
				<textElement>
					<font fontName="Verdana" size="12"/>
				</textElement>
			<textFieldExpression   class="java.lang.String"><![CDATA[$F{nmdia}]]></textFieldExpression>
			</textField>
			<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
				<reportElement
					x="274"
					y="3"
					width="62"
					height="18"
					key="textField-3"/>
				<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
				<textElement textAlignment="Justified">
					<font fontName="Verdana" size="12"/>
				</textElement>
			<textFieldExpression   class="java.lang.String"><![CDATA[$F{date_format(dshora, '%h:%i')} + "h"]]></textFieldExpression>
			</textField>
		</band>
	</detail>
	<columnFooter>
		<band height="0"  isSplitAllowed="true" >
		</band>
	</columnFooter>
	<pageFooter>
		<band height="0"  isSplitAllowed="true" >
		</band>
	</pageFooter>
	<summary>
		<band height="0"  isSplitAllowed="true" >
		</band>
	</summary>
[/code]

:arrow: :arrow: :arrow:

[b]Acho que seria interessante eu te enviar por email o código jarper…

Eu vou dar um jeito aqui de te enviar…

rdmardegam, eu já te agradeço muito pela sua atenção viu!!!

[color=red]Bjoooo…[/color][/b]

Acabei de ver o seu tópico e dei uma olhada no relatório e subrelatório que vc criou…

eu obsevei que as duas queries são identicas… eu sugiro que tente dividir elas…com a query do relatório trazendo informações que serão exibidas no relatório e query do subrelatório trazendo informações que serão exibidas no subrelatório…e acho que vc deve fazer um “join” usando no seu caso acho que a coluna codProfessor.

vou tentar demonstrar abaixo com suas queries a idéia…(não é a solução eh apenas um idéia teórica de como seria)
abaixo query do relatório

SELECT p.cdprofessor, nmprofessor, nmcurso FROM tbprofessor p, tbcurso c, tbrestricao r, tbhora h, tbdia d WHERE status = 'true' AND p.cdcurso = c.cdcurso AND r.diasemana = d.cddia AND r.horario = h.cdhora AND p.cdprofessor = r.cdprofessor ORDER BY nmprofessor, nmdia, dshora

agora usando o ireport, dentro do relatório click com o botão direito no subrelatório e click em properties vá até a guia Subreport(other) e click no botão add, na janelinha que abre coloque no primeiro campo o seguinte parametro_cdprofessor e no segundo campo o nome do campo cdProfessor (pode mudar dependendo da sua necessidade) que no caso eh $F{cdprofessor}.

no subrelatório vc deve criar o parametro_cdprofessor (ele receberá o código do professor para executar a query do subrelatório).

no subrelatório a query ficaria parecida com a query abaixo

SELECT status, sgcurso, motivo, date_format(dshora, '%h:%i'), nmdia FROM tbprofessor p, tbcurso c, tbrestricao r, tbhora h, tbdia d WHERE p.cdprofessor = $P{parametro_cdprofessor} AND status = 'true' AND p.cdcurso = c.cdcurso AND r.diasemana = d.cddia AND r.horario = h.cdhora AND p.cdprofessor = r.cdprofessor ORDER BY nmprofessor, nmdia, dshora

Acabou ficando um descrição um pouco longa e como eu não conheço a base de dados fica um pouco dificil para eu descrever melhor.
Minha intenção era trazer uma idéia de como seria, eu trabalho com o ireport a pouco tempo, abaixo vou deixar um link onde vc poderá baixar videos aulas que são as mesmas que eu usei para aprender…

http://boesing.blogspot.com/2009/09/video-aulas-jasperreportsireport.html

espero ter podido ajudar de alguma forma espero que o rdmardegam ou algum outro membro possam ajudar ainda mais

[color=red]arqueiros, Bom Dia!!![/color]

Consegui fazer o que vc me disse, tbm simplifiquei o meu sql do relatório principal.
[color=green]
Muito obrigada!!![/color]

Era exatemente o que eu precisava…

Vou estudar as video aulas que vc me passou para eu ficar craque nesse ireport… risos…

O [color=red]rdmardegam[/color], vai me ajudar a fazer esse mesmo relatório de outra forma…

Agradeço a todos que me ajudaram… vou passar para o meu próximo relatorio… risos… que acredito que ficará bem mais fácil agora…

[color=violet] Bjooo*[/color]

Olá para todos…

Bem eu continuo com um problema…

No Ireport eu já resolvi com a ajuda de meus colegas acima, porém no netbeans o trem tá feio!!!

Eu não sei fazer o código que referencia o sub não:

Olhem meu código:

[code]package Relatorios;

import Banco.Conexão;
import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class RelRestricoes{

Conexão conm = new Conexão();

public RelRestricoes() {
try
{
conm.conecta();
conm.executeSelecao(“SELECT DISTINCT (p.cdprofessor), status, nmprofessor, sgcurso, nmcurso FROM tbprofessor p, tbcurso c, tbrestricao r WHERE status = ‘true’ AND p.cdcurso = c.cdcurso AND p.cdprofessor = r.cdprofessor ORDER BY nmprofessor”);
JRResultSetDataSource jrRS = new JRResultSetDataSource(conm.resultset);
JasperPrint jasperPrint = JasperFillManager.fillReport(
“Relatorios/RelRestricoes.jasper”, new HashMap(), jrRS);
JasperViewer.viewReport(jasperPrint);
} catch (Exception erro){
JOptionPane.showMessageDialog(null,“deu erro =”+erro);
}
}

public static void main (String args[])
{
new RelRestricoes();
}
}[/code]

Me ajudem… por favor…

[color=red]Bjooo*[/color]

[color=violet][b]Boa Noite pessoal!!![/color]

[color=green]Eu continuo com o meu problema…[/color]

[color=darkred]Como eu havia falado eu consigo rodar no ireport, porém no netbeans qdo eu peço para rodar o relatorio ele gera um erro em que o sub nao está preenchido… já rodei vários post aqui do guj, já consultei o pai google e nada…[/color]

[color=blue]Gte me ajuda aí por favor…

Me falem aonde que eu dormi no ponto…

Agradeço muito a atenção de vcs…[/color][/b]

[color=red]Bjoooo*[/color]

O erro está nessa linha de código:

JasperPrint jasperPrint = JasperFillManager.fillReport(
      "Relatorios/RelRestricoes.jasper", new HashMap(), jrRS);

Se vc observar bem vc está lançando um new HashMap() para esse subrelatório. Um subrelatório necessita do parâmentro e vc passa esse parâmetro pelo HashMap.

Faça dessa forma:


// Aqui vc cria o HashMap a partir da Interface Map e passa uma String
// referente ao nome do parâmetro e o objeto referente ao parâmetro
// seja ele Integer,String, Long, ou qualquer outro tipo de objeto
Map<String, OBJETO_REFERENTE_AO_PARAMETRO> parametros = new HashMap<String, OBJETO_REFERENTE_AO_PARAMETRO>();

// Aqui vc passa o parâmetro. A cada put vc pode passar um parâmetro diferente
parametros.put(<nome_do_parametro>, <valor_do_parametro>);

//Aqui vc descomprime o arquivo .jasper e gera um arquivo .jrprint
JasperFillManager.fillReportToFile("Relatorios\\RelRestricoes.jasper", parametros, jrRS);

// Aqui vc visualiza o relatório em um JFrame pelo JasperViewer
JasperViewer.viewReport("Relatorios\\RelRestricoes.jrprint",false, false);

Fim :slight_smile:

Vc tem que preencher o parâmetro para que o subrelatório seja executado corretamente
Se não acontece o que vc está passando agora

Espero ter ajudado :slight_smile:

f4binho, Boa Tarde!!!

Eu tentei implementar isso que vc me falou:

[code]package Relatorios;

import Banco.Conexão;
import java.lang.Object;
import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class RelRestricoes{

Conexão conm = new Conexão();

public RelRestricoes() {
try
{
conm.conecta();
conm.executeSelecao(“SELECT DISTINCT (p.cdprofessor) AS cdprofessor, status, nmprofessor, sgcurso, nmcurso FROM tbprofessor p, tbcurso c, tbrestricao r WHERE status = ‘true’ AND p.cdcurso = c.cdcurso AND p.cdprofessor = r.cdprofessor ORDER BY nmprofessor”);
JRResultSetDataSource jrRS = new JRResultSetDataSource(conm.resultset);
HashMap <Object,Object> par = new HashMap<Object,Object>();
//conm.resultset.first();
//JOptionPane.showMessageDialog(null, conm.resultset.getInt(“cdprofessor”));
par.put(“parametro_cdprofessor”, “cdprofessor”);
JasperPrint jasperPrint = JasperFillManager.fillReport(
“Relatorios/RelRestricoes.jasper”, par, jrRS);
JasperViewer.viewReport(jasperPrint);
} catch (Exception erro){
JOptionPane.showMessageDialog(null,“deu erro =”+erro);
}
}

public static void main (String args[])
{
new RelRestricoes();
}
}[/code]

Mas ele continua rodando e reclamando de que os parametros nao esão sendo preenchidos…

O que eu estou fazendo de errado?

O único parametro que eu passo do relRestrições para o subRelRestrições é o cdprofessor, que eu criei um parametro dentro do subRelRestrições chamado parametro_cdprofessor, eu até coloquei no meu codigo acima…

Eu não sei mais o que fazer… já fiz vários testes e nada, roda o relatorio principal e o outro nada…

Aaaaaaaaaaaaaaaaaaaaahhh… socorrooooooooooooooooooooooo…

Qual é a mensagem que ele dá? posta aqui

Observe bem o que eu descrevi lá em cima, vou tentar ajudar:


Map <String,Integer> par = new HashMap<String,Integer>();
      
par.put("cdprofessor", 1);

Explicação:

Eu aqui criei um HashMap pela interface Map que recebe uma String e um Integer. Por que? A String que coloquei no começo é o nome do parâmetro do seu .jasper - ou seja “cdprofessor”.

Em segunda parte eu coloquei uma Integer, pois seu código professor é uma Integer. E assim eu determino qual o codprofessor eu devo selecionar.

Primeiro eu dou o nome do parâmetro - "cdprofessor"
Segundo eu informo o valor do parâmetro - 1

Isso deve resolver sua solução e, se caso contrário, der erro informe o código de erro

[color=blue][b]f4binho,

continua dando erro:[/b][/color]

init:
deps-jar:
compile-single:
run-single:
0 [subRelRestricoes subreport filler] WARN query.JRJdbcQueryExecuter  - The supplied java.sql.Connection object is null.
31 [subRelRestricoes subreport filler] WARN query.JRJdbcQueryExecuter  - The supplied java.sql.Connection object is null.
31 [subRelRestricoes subreport filler] WARN query.JRJdbcQueryExecuter  - The supplied java.sql.Connection object is null.
47 [subRelRestricoes subreport filler] WARN query.JRJdbcQueryExecuter  - The supplied java.sql.Connection object is null.
BUILD SUCCESSFUL (total time: 3 minutes 15 seconds)

[color=green][b]Lembrando que nesse meu relatorio, 4 professores tem restrições…

Qdo eu rodo, o relatorio principal roda direitinho, mas não traz os dados do sub e mostra o erro acima.

No iReport esse relatório roda filé demais!!

Se vc puder me ajudar novamente…[/b][/color]

[color=violet]
Obrigada!
[/color]

[color=red]
Beijo*[/color]

Vc colocou corretamente o driver do JDBC no classpath?

Uai, f4binho!!!

Acho que sim…

Como eu faço isso?

Posta seu código da classe de Conexão :slight_smile:

:roll:

[color=green]f4binho, eu vou postar meu codigo.

Mas antes de postar, talvez vc consiga me ajudar…

Quando eu clico no botão de fechar do meu relatorio, ele fecha o sistema todo… tenho que rodar o sistema, logar e tal… o que pode ser?[/color]

[color=red]Obrigada!

Daqui a pouco qu posto o meu código![/color]

Meu codigo de conexao:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Banco;

import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
/**
 *
 * @author cliente
 */
public class Conexão {
    private Connection conexao;
    DefaultTableModel modelo;
    public Statement statement;
    public ResultSet resultset;  
    
    public boolean conecta(){
        boolean result = true;
        try{
            Class.forName("com.mysql.jdbc.Driver");
            conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1/scihe?user=root&password=");
            //JOptionPane.showMessageDialog(null, "Conexão realizada com sucesso!");
        }
        catch(ClassNotFoundException ex){
          //  JOptionPane.showMessageDialog(null, "Não foi possível carregar o drive!");
            ex.printStackTrace();
            result = false;
        }
        catch(SQLException sqlEx){
           // JOptionPane.showMessageDialog(null, "Conexão com o banco falhou!");
            sqlEx.printStackTrace();
            result = false;
        }
        return result;
    }
    public boolean desconecta(){
        boolean result = true;
        try 
        {
            conexao.close();
            //JOptionPane.showMessageDialog(null,"Banco Desconectado com sucesso!");
        }
        catch(SQLException sqlEx) 
        {
            //JOptionPane.showMessageDialog(null,"Não foi possivel desconectar!");
            sqlEx.printStackTrace();
            result = false;
        }
        return result;    
    }
    public boolean executeSQL(String sql){
        boolean result = true;
        try 
        {
            statement = conexao.createStatement();
            statement.executeUpdate(sql);
           // JOptionPane.showMessageDialog(null,"SQL executada com sucesso!");
        }
        catch(SQLException sqlEx) 
        {
        //   JOptionPane.showMessageDialog(null,"Não foi possível "+
        //           "executar o comando sql,"+sqlEx+", o sql passado foi "+sql);
           sqlEx.printStackTrace();
           result = false;
        }
        return result;
    }
    public boolean executeSelecao(String sql){
        boolean result = true;
        try 
        {
            statement = conexao.createStatement(
                    ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
            resultset = statement.executeQuery(sql);
        //    JOptionPane.showMessageDialog(null,"SQL executada com sucesso! "+sql);
        }
        catch(SQLException sqlEx) 
        {
        //   JOptionPane.showMessageDialog(null,"Não foi possível "+
        //           "executar o comando sql,"+sqlEx+", o sql passado foi "+sql);
           sqlEx.printStackTrace();
           result = false;
        }
        return result;
    }   
  
}

Obrigada!

Keila, esse problema está dando pq o seu objeto Connection está como nulo.

Mas pelo visto não me parece nada de errado, apesar de estar meio confuso o código.

Mas está aparecendo que não foi instanciado o objeto connectio

Pow estou com um pouco de pressa hj então vou postar a classe de Conexao que normalmente uso

Se te ajudar com algo

import java.sql.*;
import java.text.SimpleDateFormat;
import javax.swing.JOptionPane;

public class Conexao {
	
	protected Connection con;

	protected Statement stmt;

	protected ResultSet rs;

	protected PreparedStatement ps;

	protected SimpleDateFormat formatoDia;

	protected SimpleDateFormat formatoHora;

	public Conexao() {
		formatoDia = new SimpleDateFormat("dd/MM/yyyy");
		formatoHora = new SimpleDateFormat("HH:mm:ss");
	}

	protected void conectar() {
		try {
			Class.forName("com.mysql.jdbc.Driver");  
            con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/scihe?user=root&password=");
			stmt = con.createStatement();
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, e, "ERRO", JOptionPane.ERROR_MESSAGE, null);
			System.exit(0);
		}
	}

	protected void desconectar() {
		try {
			rs.close();
			stmt.close();
			con.close();
			ps.close();
		} catch (Exception e) {
		}
	}

}

Quando eu uso uma classe utilizando a minha de Conexão, eu crio essa nova classe extendendo essa. Aew normalmente meu código de um método fica assim.

public void listar() {
		try {
			conectar();
			rs = stmt.executeQuery("Aqui eu descrevo a Query");
            //Aqui eu descrevo o método
			desconectar();
		} catch (Exception e) {
			desconectar();
		}
	}

Espero que te dê uma ajuda