Olá amigo
segue os fontes para vc usar:
printButton.addActionListener(new OrdemServicoDetailFrame_printButton_actionAdapter(this));
public void printButton_actionPerformed(ActionEvent e) throws JRException, MalformedURLException {
RelatorioMBean relOrdemservico = new RelatorioMBean(conn);
StringBuilder query = new StringBuilder();
query.append("select ");
query.append("ordemservico.id,");
query.append("ordemservico.dataordemservico,");
query.append("ordemservico.fk_cliente,");
query.append("clientes.nome,");
query.append("clientes.endereco,");
query.append("clientes.telefone,");
query.append("clientes.telcomercial,");
query.append("clientes.celular,");
query.append("clientes.complemento,");
query.append("clientes.cidade,");
query.append("clientes.uf,");
query.append("ordemservico.fk_marca,");
query.append("marca.nome as nomemarca,");
query.append("ordemservico.fk_tipoequipamento,");
query.append("tipoequipamento.nome as nomeequipamento,");
query.append("ordemservico.modelo,");
query.append("ordemservico.numeroserie,");
query.append("ordemservico.defeito,");
query.append("ordemservico.acessorios,");
query.append("ordemservico.observacao,");
query.append("ordemservico.garantia,");
query.append("ordemservico.datacompra,");
query.append("ordemservico.notafiscal,");
query.append("ordemservico.numerocertificado,");
query.append("ordemservico.revendedor,");
query.append("ordemservico.fabricanteimportador,");
query.append("ordemservico.desconto,");
query.append("ordemservico.valor,");
query.append("ordemservico.valortotal,");
query.append("ordemservico.situacao ");
query.append("from ordemservico ");
query.append("left join marca on marca.id=ordemservico.fk_marca ");
query.append("left join tipoequipamento on tipoequipamento.id=ordemservico.fk_tipoequipamento ");
query.append("left join clientes on clientes.id=ordemservico.fk_cliente ");
query.append("where ordemservico.id= $P{OS_ID}");
pk = OrdemServicoDetailFrameController.pk.trim();
os_id = Integer.parseInt(pk);
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("PAR_SQL", query.toString());
parametros.put("OS_ID", os_id);
relOrdemservico.geraRelatorio("ordemservico.jasper", parametros,null);
}
classe RelatorioMBean:
package br.com.assistenciadesktop.relatorios;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.*;
public class RelatorioMBean {
//extends AbstractCrudBean<Relatorio> {
public Connection conn = null;
public RelatorioMBean(Connection conn) throws JRException {
this.conn = conn;
}
public void geraRelatorio(String pathReport, Map<String, Object> parametros, ResultSet rs) throws JRException, MalformedURLException {
URL reportURL = RelatorioMBean.class.getResource("/br/com/assistenciadesktop/relatorios/");
String reportDir = reportURL.getFile();
URL relatorioURL = RelatorioMBean.class.getResource(pathReport);
File file = new File(relatorioURL.getFile());
JasperReport jr = (JasperReport) JRLoader.loadObject(relatorioURL);
System.out.println(relatorioURL);
System.out.println(parametros.values());
JasperPrint jp = JasperFillManager.fillReport(jr, parametros, conn);
JasperViewer jv = new JasperViewer(jp, false);
jv.setVisible(true);
}
private static Map<String, Object> getParameter(Map<String, Object> parametros) throws MalformedURLException {
if(parametros == null){
parametros = new HashMap<String, Object>();
}
URL reportURL = ResourceUtil.getResource("classpath:/reports");
String reportDir = reportURL.getFile();
parametros.put("REPORT_PATH", reportDir);
return parametros;
}
}
dentro do seu jasper coloque no report query:
$P!{PAR_SQL}
Silvio Guedes