Problema com parametros na iReport

Boa noite pessoal.

Estou com o seguinte problema. Tenho o seguinte metodo.

[code]public void RelatorioFornecedor(int botao, int codigo){

	if (botao == 1){	
		try{
			HashMap map = new HashMap();
			String arquivoJasper = "D:\Projects\Relatórios\Farmaxy\Fornecedores.jasper";
			JasperPrint rel = JasperFillManager.fillReport(arquivoJasper, map, con);
			JasperViewer.viewReport(rel, false);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	if(botao == 2){
		try{
			HashMap map = new HashMap();
			map.put("SQL", "SELECT Nome FROM Pessoa WHERE Pessoa_Codigo = " + codigo);

			String arquivoJasper = "D:\Projects\Relatórios\Farmaxy\Fornecedor.jasper";
			JasperPrint rel = JasperFillManager.fillReport(arquivoJasper, map, con);
			JasperViewer.viewReport(rel, false);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}[/code]

Quando passo o parametro boão com 1, consigo visualizar o relatório, porém quando passo o mesmo parametro com o valor 2. Ele não gera o relátorio. Acredito que o problema esteja na configuração do parametro esteja no iReport. Alguém sabe de algum passo a passo para gerar o relatório a partir da SQL que coloquei no map. Estou com o iReport 3.6.2.

Obrigado!

bom… até onde eu sei, você não pode passar uma sql via parâmetro no iReport (a menos que você tenha um sub-relatorio e aí você passa uma conexão)…
os parâmetros servem para valores fixos que você pode definir no próprio código…
se você criar a partir de HashMap na hora de chamar o “put” o primeiro parâmetro da assinatura é o nome do parâmetro no iReport e o segundo é o valor…

Já paddei só o código como parametro tb não resolveu. O problema é que não está gerando o relatório. Seu eu gerar um relat´rio com o mesmo nome no mesmo caminho ele encontra. Mas não gera com a sentença passada no map.

se é o que eu entendi porque você não cria a SQL normal (no próprio DS do relatório) e então seta os parâmetros conforme a necessidade?

A minha dificuldade é em criar a sentença configurada para receber os parametros. É a primeira vez que vejo um programa de relatorios. Nunca tive contato com um nem ao menos parecido. Além disso BD não é bem o meu forte. Se puderem me explicar mais detalhadamente como posso fazer isso. O relatório deve ser criado em tempo de execução.

Obrigado!

você pode passar a sql normal do relatório entendeu? sem utilizar parâmetros…
os parâmetros da sql você seta na própria sql e então larga no DS do relatório

A alternativa para resolver esse tipo de problema é utilizar o proprio SQL

ao invés de HashMap, mas se realmente quer utilizar de HashMap, pode acontecer

situações de o Jasper acusar que o relatório nao possui páginas… Se é este o problema…

Deves criar um ArrayList de paginas que possui um objeto vazio, e utilizar no lugar do RS (resultSet)

Att. Jonas

Consegui encontrar a resposta.

Como eu dissemeu problema estava com a sentençca no iReport.

Ficou assim.

SELECT * FROM Pessoa Where Pessoa_Codigo = $P{codigo}

Onde codigo foi o valor passado no map.

Pode fechar o tópico!

Obtigado a todos.