Relatorio em Java Netbeans Desktop - jasperireports - passagem de parametros
7 respostas
wpellegrini
Pessoal, estou desenvolvendo uma aplicação no NetBeans 6.9.1 e os relatorios estou criando no ireports 3.7.5 ate ai tudo bem. consegui criar um botao e carregar o relatorio. Mas o que desejo ajuda é , coloquei o jtextfield no meu form e um button. Isso para passar parametros e gerar um relatorio de acordo com o que eu digitar no meu jtextfield, a consulta ta funcionando so que ele não da erro nem gera o relatorio alguem poderia me ajudar. abaixo estou colocando o codigo que fiz:
o que desejo é quando eu colocar o codigo ele faça um select no banco e so carregue o item solicitado. Dei um system.out.println para ve se a consulta ta correta e esta. Então quem puder me ajudar agradeceria muito.
intcodeve=Integer.parseInt(jTextField2.getText());Connectioncon=(Connection)newConexaoMySQL().getConnection();Stringqr="select * from recebimento where cod_recebimento="+codeve;//System.out.println(qr);Statements=(Statement)con.createStatement();ResultSetrs=s.executeQuery(qr);JRResultSetDataSourcetst=newJRResultSetDataSource(rs);HashMapmap=newHashMap();map.put(qr,con);JasperPrintjp=JasperFillManager.fillReport("./jasper/relteste.jasper",map,tst);JasperViewerjrv=newJasperViewer(jp);jrv.setVisible(true);}catch(Exceptione){}}
Opa, não sei se estou certo, mas acho q o seu erro esta no HashMap pois os vc esta dizendo q QR vai receber o CONN, eu uso o
Hashtable ht = new Hashtable();
O primeiro parametro é aquele q eh criado dentro do JasperReports e o segundo é o valor q esse parametro irá assumir!
Obs:nao sei se expliquei bem, qlqr duvida posta ai!
tinorberto
eu uso esse metodo
JasperPrintrelatorio=null,relatorio2=null;StringdescricaoParametro=null;try{HashMapparametros=newHashMap();//colocaroparametronomapparametros.put("ID_PROFESSOR",professor);//carregandooarquivo.jasperJasperReportjasperReport=(JasperReport)JRLoader.loadObject(rel1);relatorio=JasperFillManager.fillReport(rel1,parametros,FabricaConexao.getConection());JasperViewervisualizador=newJasperViewer(relatorio,false);visualizador.setVisible(true);}catch(JRExceptione){JOptionPane.showMessageDialog(null,"Ocorreu um erro na geração do relatorio");e.printStackTrace();}
flw
tinorberto
outra coisa aqui
map.put(qr, con);
vc deve passar o nome do parametro no report e o valor, tipo
map.put(ID, 10);
No seu report vc deve criar o parametro para receber esse valor. flw
L
lokits5
bom vo post um codigo ve se entende é bem simples ,funcionormalmente...normal
packagecontroller.relatorio;importjava.net.URL;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.ArrayList;importjava.util.List;importmodel.to.RelatorioSeguradoTO;importnet.sf.jasperreports.engine.JRException;importnet.sf.jasperreports.engine.JasperFillManager;importnet.sf.jasperreports.engine.JasperPrint;importnet.sf.jasperreports.engine.JasperReport;importnet.sf.jasperreports.engine.data.JRBeanCollectionDataSource;importnet.sf.jasperreports.engine.util.JRLoader;importnet.sf.jasperreports.view.JasperViewer;/* Primeira parte */publicclassRelatorio{staticConnectionconnection;ResultSetrs=null;publicRelatorio(Integercodigo){/* Efetua a conexao a base de dados e coleta os valores da base de dados armazenando-os em um array para ser futuramente utilizado */RelatorioSeguradoTOrelatorioSeguradoTO=newRelatorioSeguradoTO();try{Class.forName("org.apache.derby.jdbc.ClientDriver");// O sun.jdbc.odbc.JdbcOdbcDriver significa que seria usado um banco accessStringurl="jdbc:derby://localhost:1527/Cadastro;create=false";// esta string carrega o nome da fonte de dadosconnection=DriverManager.getConnection(url,"vitor"," ");// aqui efetuada conex�o passando -se a fonte de dados e o login e senha do banco, que neste caso n�sso existem.//System.out.println("Conexão estabelecida"); // exibida uma mensagem informando que a conex�o foi efetuadaPreparedStatementpstm=connection.prepareStatement("select * from tb_Cadastro where codigo = ?");pstm.setInt(1,codigo);rs=pstm.executeQuery();if(rs.next()){relatorioSeguradoTO.setCodigo(rs.getInt("codigo"));relatorioSeguradoTO.setNomeSegurado(rs.getString("nomeSegurado"));relatorioSeguradoTO.setNascimento(rs.getString("Nascimento"));relatorioSeguradoTO.setSexo(rs.getString("Sexo"));relatorioSeguradoTO.setCpf(rs.getString("CPF"));relatorioSeguradoTO.setEnde(rs.getString("Ende"));relatorioSeguradoTO.setBairro(rs.getString("Bairro"));relatorioSeguradoTO.setNumeroRes(rs.getInt("NumeroRes"));relatorioSeguradoTO.setComplemento(rs.getString("codigo"));relatorioSeguradoTO.setProduto(rs.getString("Produto"));relatorioSeguradoTO.setPremio(rs.getString("Premio"));relatorioSeguradoTO.setCep(rs.getString("CEP"));relatorioSeguradoTO.setUf(rs.getString("UF"));relatorioSeguradoTO.setNomeEmpresa(rs.getString("nomeEmpresa"));relatorioSeguradoTO.setEndrecoEmpresa(rs.getString("endrecoEmpresa"));relatorioSeguradoTO.setBairroEmpresa(rs.getString("bairroEmpresa"));relatorioSeguradoTO.setCidadeEmpresa(rs.getString("cidadeEmpresa"));relatorioSeguradoTO.setCnpj(rs.getString("cnpj"));relatorioSeguradoTO.setBanco(rs.getString("banco"));relatorioSeguradoTO.setAgencia(rs.getString("agencia"));relatorioSeguradoTO.setAgenciaDV(rs.getString("agenciaDV"));relatorioSeguradoTO.setConta(rs.getString("conta"));relatorioSeguradoTO.setContaDV(rs.getString("contaDV"));relatorioSeguradoTO.setTipoDeConta(rs.getString("tipoDeConta"));}}catch(Exceptione){System.err.println("Problemas apresentados na operacao de conexao");e.printStackTrace();}/* Inicio do bloco que ira gerar nossos relatorios e 3ª parte */try{JRBeanCollectionDataSourceds=null;JasperPrintprint=null;//Verifica se existe no minimo uma proposta a ser impressar List<RelatorioSeguradoTO>listaRelatorio=newArrayList<RelatorioSeguradoTO>();listaRelatorio.add(relatorioSeguradoTO);ds=newJRBeanCollectionDataSource(listaRelatorio);URLurl=getClass().getResource("/relatorio/Relatorio_Cadastro.jasper");JasperReportrelatorioJasper=(JasperReport)JRLoader.loadObject(url);print=JasperFillManager.fillReport(relatorioJasper,null,ds);JasperViewer.viewReport(print,null,"Relatorio de Clientes",null);}catch(JRExceptione){e.printStackTrace();}}/* Aqui chamamos o construtor de nossa classe para exibirmos o relatorio e 4ª parte*///public static void main (String args[]) { // new Relatorio(1); //System.out.println("ok"); //} }
qualquer coisa post mais duviddas!
abrxx
DeGuedes
Isso ai, no primeiro parametro vc passa uma String q foi criada dentro do JasperReports e no segundo o valor q esse parametro irá receber!!!
wpellegrini, arrume seu HashTable e seu relatorio ira funcionar!
wpellegrini
Valeu Galera, Estarei verificando e ja ja dou um retorno a voce.
wpellegrini
Pessoal ainda nada, mas ja ta adiantado. Ele ta lendo Jtextfield , mas quando clico no Button ele não esta carregando o relatorio de acordo com os parametros passados e sim esta buscando todos os registro.
So uma duvida no relatorio que eu criei no ireports3.7.5 eu preciso configurar o textfild que adicionei la para receber esse parametro ou não? pois percebi que o textfield tem uma propriedade chamada Editexpression no ireport mas não sei bem como funciona. Então eu criei o formulario com as tabelas normalmente de forma basica definindo os textField sincronizados com os campos da tabela e dou um preview e ele me mostra o formulario funcionando perfeitamente.