Tenho um sistema que era para gerar um sistema simples de relatorio atraves do Jasper, mas está apresentando erro no relatorio, a seguir tem o conteudo do botão e do erro apresentado:
method getResourceAsStream in class java.lang.Class cannot be applied to given types
required: java.lang.String
found: java.lang.String, java.util.HashMap, java.sql.Connection
a unica string que tem ai é a conn que já está declarada:
O thiago errou na hora de colocar o parêntes no lugar certo
[]´s
Willdoidao
Caras perfeito funcionou a chamada, mas estou com um outro erro agora que é esse:
15/01/2010 16:36:58 net.sf.jasperreports.engine.query.JRJdbcQueryExecuter
WARNING: The supplied java.sql.Connection object is null.
E fala que não há paginas no relatorio, sendo que existe dados na tabela em questão!!!
T
thiagow1
Faltou uma chave depois do “Armacao.jasper” foi mals kkkk
Esse erro ocorreu porque o objeto Connection está nulo
Posta a classe inteira para a gente dar uma olhada
davidbuzatto
Will, leia a excessão: The supplied java.sql.Connection object is null
A conexão que você está passando não está sendo criada.
Confira se os dados parâmetros passados para a criação da conexão estão corretos.
[]´s
Willdoidao
Caras muito obrigado pela ajuda que vcs estão dando !!! Consegui resolver o problema d aconecção com o banco de dados nesse caso o Mysql, só que apareceu outro, o relatorio não está gerando os dados, ele monta o relatorio só que nw preenche nada, não dá erro, ele está conectando ao banco, criei uma classe só para cuidar da conecção mas não está preenchendo o relatorio!! o que pode ser, preciso fazer um select ante? segue a baixo o conteudo do botão:
Galera realmente não sei o pq nw está sendo preenchido o relatorio já refiz a conecção do plugin do netbeans a classe o botão, e só está sendo preenchindo o cabeçario do relatorio nada mais, preciso desse relatorio e nada de conseguir alguma sugestão??!?!?
Classe responsável pela conecção:
publicclassconecao{publicConnectionconectar(){// base de dados é "test"Stringurl="jdbc:mysql://localhost:3306/otica";Stringusuario="root";Stringsenha="will@958";try{Class.forName("com.mysql.jdbc.Driver").newInstance();Connectionconn=DriverManager.getConnection(url,usuario,senha);returnconn;}catch(SQLExceptionex){System.out.println("SQLException: "+ex.getMessage());System.out.println("SQLState: "+ex.getSQLState());System.out.println("VendorError: "+ex.getErrorCode());returnnull;}catch(Exceptione){System.out.println("Problemas ao tentar conectar com o bancode dados: "+e);returnnull;}}}
Já fiz como o davidbuzatto me falaram tb para jogar o arquivo jasper na raiz do projeto e os dois acontece a mesma coisa só preenche o cabeçario!
Willdoidao
Galerarealmentenãoseiopqnwestásendopreenchidoorelatoriojárefizaconecçãodoplugindonetbeansaclasseobotão,esóestásendopreenchindoocabeçariodorelatorionadamais,precisodesserelatorioenadadeconseguiralgumasugestão??!?!?Classeresponsávelpelaconecção:[code]publicclassconecao{publicConnectionconectar(){// base de dados é "test"Stringurl="jdbc:mysql://localhost:3306/otica";Stringusuario="root";Stringsenha="will@958";try{Class.forName("com.mysql.jdbc.Driver").newInstance();Connectionconn=DriverManager.getConnection(url,usuario,senha);returnconn;}catch(SQLExceptionex){System.out.println("SQLException: "+ex.getMessage());System.out.println("SQLState: "+ex.getSQLState());System.out.println("VendorError: "+ex.getErrorCode());returnnull;}catch(Exceptione){System.out.println("Problemas ao tentar conectar com o bancode dados: "+e);returnnull;}}}
Amigo refiz o botão mas ainda nw consegui resolver, poderia me ajudar? É a primeira vez que mexo com o ireport e to apanhando demais! O botão ficou assim agora:
Então pq em outros topicos tinham dito que com o plugin do netbeans nw era necessario fazer o select que ele faria isso sozinho!
TheKill
então tá…
se o seu netbeans consegue adivinhar onde os dados estão…
parabens pois ainda desconheço isso…
Salvo, se vc está usando a conexao de banco diretamente no relatório
att. Jonas
Willdoidao
Então cara como falei to perdidão é a primeira vez que mexo com relatorios! Nw faço nem ideia de como recriar essa classe para poder fazer a conecção direta com o banco ou de como preencher esse relatorio!
TheKill
Faça a consulta com o result set … e ao invés de mandar um simples conn que nao tem nada dentro…
vc vai enviar o result set com as informações já consultadas…
ps.: … os famosos select da vida, rs.next();
o basicao de consulta a banco de dados.
att. Jonas
Willdoidao
Seguindo o conselho do TheKill pesquisei mais um pouco na net e achei alguns exemplos que tentei aplicar ao meu relatorio mas sem conseguir o resultado esperado o botão está da seguiinte maneira:
try {
CallableStatement CS = null;
Connection conn = new conecao().conectar();
if (conn != null) {
JOptionPane.showMessageDialog(null, "Conexão efetuada com sucesso!");
} else {
JOptionPane.showMessageDialog(null, "Conexão não efetuada com sucesso!");
}
Statement stm = conn.createStatement();
String query = "select * from arma";
ResultSet rs = stm.executeQuery(query);
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
HashMap mapa = new HashMap();
JasperPrint relatorio = null;
relatorio = JasperFillManager.fillReport("report1.jasper", mapa, conn);
JasperViewer.viewReport(relatorio, true);
} catch (Exception ex) {
ex.printStackTrace();
}
E continua a não preencher o relatorio! Nw sei mais o que fazer para esse relatorio funcionar!
o fillReport fica marcado como errado e nw achei nada no lugar para substituir sem dá o erro, e mano java como preencheo isso? pq nos exemplos que achei inclusive aqui do forum (tanto outros topicos como o tutorial) o Map está declarado daquela maneira!
o map pode ir null, desde que nao teja esperando $P em seu relatorio
Willdoidao
Cara passei esses dias tentando e pesquisando, mas realmente nw sei o que fazer, nw consigo fazer funcionar de jeito nenhum cara!
ManoJava
Manda uma cópia do .jrxml pra gente dar uma analisada.
TheKill
Ps.:
Envie aqui no GUJ um copy do seu result set para analisar…
system.out.println(rs);
ao meu ver, seu result set esta indo null para o relatório
att. Jonas
Willdoidao
Blz vou mandar o resultado logo mais, primeiro vou mandar o que o ManoJava pediu jundo com uma copia do banco e da tela que chama o relatorio.
E assim que sair de uma reunião coloco o resultado, a tela em questão está com o primeiro codigo postado por mim aqui.
Caras mais uma vez obrigado pela ajuda! Muito obrigado!
TheKill
Segue dúvida.
Você esta querendo que as informações venham da aplicação, ou sejam geradas diretamente do relatório?
ou seja relatório Dinâmico ou Stático…
Se for Dinâmico, retire do seu relatório o Report Query que contem SQL. isso vai ser enviado de sua aplicação
e o relatório vai ser moldado de acordo com os dados enviados pela mesma.
Caso contrario, verifique se está sendo feito a conexao corretamente no seu Report Query, utilizando da opcao de teste de conexão
e também no Preview.
Att. Jonas
Willdoidao
Então estatico mesmo! Então nos dois casos ele funciona, tanto no teste como no preview, só quando chamo o maldido relatorio ele aparece em branco!
TheKill
Huuum, entendi.
Olha, eu nunca trabalhe desta forma com o iReport…
sempre passei o SQL ou HashMap pela aplicação entao nao sei como te ajudar…
Att. Jonas
ManoJava
Boa tarde
Tava analisando sua query e notei que vc nao colocou nenhuma clausula WHERE no codigo, quais as condições para esse retorno do relatório where ? = ?
Att.
Willdoidao
Mano não coloquei nada pq é um relatorio geral mesmo quero que retorne tudo dele, pq vai ser usado para conferir o material.
Thekill poderia dar um exemplo de como vc trabalha? um codigo de exemplo cara pq sendo sincero nw sei mais o que fazer, olho para o codigo e tá batendo é desespero cara!
TheKill
Amigo, poste o result set conforme comentado anteriormente…
e altere seu sql para select campo1, campo2, campo3, etc from tabela …
ps.: campos conforme os que existem no relatorio.
obs.: se os nomes estiverem diferente utilize da sintaxe AS nomeCampoRelatorio.
exemplo: select codigo as cd_mercadoria
bd campo: codigo
relatorio campo: cd_mercadoria
sql: select codigo as cd_mercadoria from …
Att. Jonas
Willdoidao
Caras o select ficou assim, to usando o assistente do ireport para fazer o select:
SELECT
arma.`Tamanho` AS arma_Tamanho,
arma.`Quanti` AS arma_Quanti,
arma.`Fabricante` AS arma_Fabricante,
arma.`Cor` AS arma_Cor,
arma.`Modelo` AS arma_Modelo,
arma.`Tipo` AS arma_Tipo
FROM
`arma` arma
e o a saida está assim:
com.mysql.jdbc.JDBC4ResultSet@df503
TheKill
se a sua resposta de resultset é esta que vc postou,
seu sql esta errado,
veja seu banco e olhe as respostas de cada item da tabela…
e vai verificar que não é este resultado:
com.mysql.jdbc.JDBC4ResultSet@df503
onde tá os resultados da consulta SQL ?
TheKill
eu fiz um teste, alterei apenas 1 campo para buscar do meu banco de dados.
tirei todos e deixei apenas 1 campo, vou anexar o arquivo para vc olhar, e verifique corretamente seus campos e FIELDS do relatorio…