Eu ja tentei de varias formas passar parametro para o ireport e nao consigo, ja procurei na internet, fiz igual varios exemplos e mesmo assim nao consegui.
se eu tirar as opcoes de paramtro impressao = JasperFillManager.fillReport(report, NULL, con); funciona perfeitamente mas eu preciso do parametro para poder escolher a empresa que sairá na impressao pelo ID.
na parte de consulta de relatorio do ireport falaram pra eu usar a sql SELECT * FROM empresa WHERE id=’$P{query}’, mas creio que as aspas sáo para verificar um modo de palavra.
Olá…
Bem, vamos por partes.
Quando você decide passar parâmetros para o Jasper, e necessário que você também crie uma referência a esse parâmetro no iReport (se você usa o iReport).
Exemplo:
Vamos passar um parâmetro como o ID para uma consulta no iReport
Map<String, Object> parametros = new HashMap<String, Object>()
parametros.put("id", valorDoId);
Feito isso, vamos no iReport e então criamos uma referência ao parametro que será passado:
No iReport, vá em Visualizar, Parâmetros do Relatório, então clique em Novo, no Nome do Parâmetro, informe o nome do parâmetro que você quer usar, usando o mesmo nome que passou para o Mapa (no nosso caso id).
Então, na query dentro do seu relatório você pode usar:
muitissimo obrigado, funcionou certinho, so deu um erro mas logo saquei de cara que faltava mudar algo relacionado a variavel pois a minha variavel é uma int e quando cria o padrao é String, logo depois de “visualizar”, “parametros de relatorio”, “novo” ao criar a variavel precisei mudar para int.
Aproveitando a ocasiao, vc saberia me dizer como passar por parametro uma imagem?
muitissimo obrigado, funcionou certinho, so deu um erro mas logo saquei de cara que faltava mudar algo relacionado a variavel pois a minha variavel é uma int e quando cria o padrao é String, logo depois de “visualizar”, “parametros de relatorio”, “novo” ao criar a variavel precisei mudar para int.
Aproveitando a ocasiao, vc saberia me dizer como passar por parametro uma imagem?
Abs[/quote]
Bem, para passar uma imagem como parametro, você deve usar da mesma forma, passando para o mapa como chave e valor, e no iReport, criar uma referência ao parametro (como fizemos com o id, do mesmo tipo);
Para saber os tipo de objetos que você pode passar como imagem basta ir na aba Imagem e ver na combo Classe de Expressão de Imagem.
Lembrando apenas que os do tipo String deve ser o caminho completo da imagem (Ex.: c:\diretório\imagem.img).
Tem como passar o valor de uma String pelo ireport.
Eu quero criar uma logica no java onde vai montar a query e passar a query pronta pro ireport.
Ex
No java eu faco assim
String query = “SELECT * FROM empresaFuncionario WHERE empresa=’”+customizadoEmpresaFuncionarioEmpresa+"’";
if (!customizadoEmpresaFuncionarioNome.equals("")){
query += "AND nome=\'"+customizadoEmpresaFuncionarioNome+"\'";
if (!customizadoEmpresaFuncionarioAno.equals("")){
query += "AND ano =\'"+customizadoEmpresaFuncionarioAno+"\'";
if (!customizadoEmpresaFuncionarioMes.equals("")){
query += "AND ano =\'"+customizadoEmpresaFuncionarioMes+"\'";
Eu preciso fazer assim, porque se o cara nao preencher todos os campos, a tabela nao é gerada pelo ireport, se eu conseguisse passar so a variavel query formando a “Query na consulta de relatorio do irepot” ficaria certinho.
estou com problemas no meu subrelatorio. No iReports, ele aparece blz, mas no java, o relatorio principal aparece, mas o subrelatorio fica branco…
Com certeza é barberagem minha, mas ainda não encontrei o erro… provavelmente é de parametrização ou de query (apesar de funcionar direitinho no pgadmin).
Segue abaixo o codigo do método e do jasper do relatorio principal e do sub. Se puder ajudar, agradeço.
Vlws.
método no bean:
[code] public String imprimirRelatorio(ActionEvent event) throws Exception {
// pegar objeto com actionEvent
UIComponent link = event.getComponent();
UIParameter parametro = (UIParameter) link.findComponent("printCod");
Long id = (Long) parametro.getValue();
saida = null;
System.out.println("metodo de impressao");
String jasper = getDiretorioReal("/jasper");
Connection conexao = null;
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) facesContext
.getExternalContext().getResponse();
ServletOutputStream servletOutputStream = response.getOutputStream();
try {
Connection con = new Conexao().getConexao();
Statement stm = con.createStatement();
String query = "SELECT pf.cod_funcionario AS cod_funcionario, es.descricao AS escolaridade_descricao, og.nome AS og_nome, cg.descricao AS cargo_descricao, chs.descricao AS cargahoraria_descricao, uf.uf AS uf, mn.municipios AS municipio, * FROM pforgaogestor pfog INNER JOIN orgaogestor og ON og.cod_orgaogestor = pfog.cod_orgaogestor INNER JOIN cargo cg ON cg.cod_cargo = pfog.cod_cargo INNER JOIN cargahorariasemanal chs ON chs.cod_chs = pfog.cod_chs INNER JOIN funcionario pf ON pf.cod_funcionario = pfog.cod_funcionario INNER JOIN escolaridade es ON es.cod_escolaridade = pf.escolaridade_cod_escolaridade INNER JOIN estados uf ON uf.cod_estado = pf.estados_cod_estados INNER JOIN municipiosrr mn ON mn.cod_municipiosrr = pf.municipiosrr_cod_municipiosrr WHERE pf.cod_funcionario="
+ id;
ResultSet rs = stm.executeQuery(query);
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
// parametros
Map parametros = new HashMap();
parametros.put("QUERY", con);
// PARAMETRO ADICIONADO PARA SUBREPORT
parametros.put("pathPessoafisicaDCsubOG", jasper
+ "/pessoafisicaDCsubOG.jasper");
// Mando o jasper gerar o relatório
JasperPrint rel = JasperFillManager.fillReport(jasper
+ "/pessoafisicaDC.jasper", parametros, jrRS);
// exibindo o pdf para impressao
// JasperViewer.viewReport(rel, false);
// exportando o pdf
System.out.println("pdf gerado");
ByteArrayOutputStream output = new ByteArrayOutputStream();
JasperExportManager.exportReportToPdfStream(rel, output);
response.setContentType("application/pdf");
response.addHeader("Content-Disposition",
"attachment;filename=relatorio" + id + ".pdf");
response.setContentLength(output.size());
servletOutputStream.write(output.toByteArray(), 0, output.size());
servletOutputStream.flush();
servletOutputStream.close();
facesContext.responseComplete();
} catch (JRException e) {
e.printStackTrace();
} finally {
try {
if (conexao != null)
conexao.close();
} catch (Exception e) {
}
}
return "exibeRelatorio";
}[/code]
xml do subrelatorio:
[code]<?xml version="1.0" encoding="UTF-8"?>
<![CDATA[SELECT
pf.cod_funcionario AS cod_funcionario,
es.descricao AS escolaridade_descricao,
og.nome AS og_nome,
cg.descricao AS cargo_descricao,
chs.descricao AS cargahoraria_descricao,
uf.uf AS uf,
mn.municipios AS municipio,
FROM pforgaogestor pfog
INNER JOIN orgaogestor og ON og.cod_orgaogestor = pfog.cod_orgaogestor
INNER JOIN cargo cg ON cg.cod_cargo = pfog.cod_cargo
INNER JOIN cargahorariasemanal chs ON chs.cod_chs = pfog.cod_chs
INNER JOIN funcionario pf ON pf.cod_funcionario = pfog.cod_funcionario
INNER JOIN escolaridade es ON es.cod_escolaridade = pf.escolaridade_cod_escolaridade
INNER JOIN estados uf ON uf.cod_estado = pf.estados_cod_estados
INNER JOIN municipiosrr mn ON mn.cod_municipiosrr = pf.municipiosrr_cod_municipiosrr
WHERE pf.cod_funcionario=$P{codPF}
]]>
[/code]
xml do relatorio principal:
[code]<?xml version="1.0" encoding="UTF-8"?>
<![CDATA[SELECT
pf.cod_funcionario AS cod_funcionario,
es.descricao AS escolaridade_descricao,
og.nome AS og_nome,
cg.descricao AS cargo_descricao,
chs.descricao AS cargahoraria_descricao,
uf.uf AS uf,
mn.municipios AS municipio,
FROM pforgaogestor pfog
INNER JOIN orgaogestor og ON og.cod_orgaogestor = pfog.cod_orgaogestor
INNER JOIN cargo cg ON cg.cod_cargo = pfog.cod_cargo
INNER JOIN cargahorariasemanal chs ON chs.cod_chs = pfog.cod_chs
INNER JOIN funcionario pf ON pf.cod_funcionario = pfog.cod_funcionario
INNER JOIN escolaridade es ON es.cod_escolaridade = pf.escolaridade_cod_escolaridade
INNER JOIN estados uf ON uf.cod_estado = pf.estados_cod_estados
INNER JOIN municipiosrr mn ON mn.cod_municipiosrr = pf.municipiosrr_cod_municipiosrr