Bom dia, estou com uma duvida quanto a classe para chamar o relatorio, criei os relatorios no plugin do Ireport no NetBeans, criou beleza, criei a classe para chamar o relatorio e ela não apresenta nenhum erro, só que quando chamo no botão ela apresenta um erro, vou postar aki minha classe e logo após o erro que ela apresenta.
[quote=drsmachado]Camarada, o arquivo com.br.relariosel_cli.jasper não está no local que deveria (ou o nome dele está diferente na chamada). Como o nome está aqui
JasperPrint jasperPrint = JasperFillManager.fillReport(
"com.br.relatorios\rel_cli.jasper", new HashMap(), jrRS);
acredito que não esteja na pasta raiz do projeto[/quote]
De feto o erro está dando porque ele não está achando o arquivo
Ele diz que está nesse diretorio:
C:\Users\Douglas\Documents\Projetos Net\Estoque_t2ti\src\com\br\relatorios\relatorio.jasper
Só que na hora que eu coloco
String arquivoJasper = "C:\Users\Douglas\Documents\Projetos Net\Estoque_t2ti\src\com\br\relatorios\relatorio.jasper"; // ele diz que é ilegal escape character
JasperPrint jasperPrint = JasperFillManager.fillReport(arquivoJasper,parametros, jrRS);
JasperViewer.viewReport(jasperPrint);
[quote=JavaPB]Ele diz que está nesse diretorio:
C:\Users\Douglas\Documents\Projetos Net\Estoque_t2ti\src\com\br\relatorios\relatorio.jasper
Só que na hora que eu coloco
String arquivoJasper = "C:\Users\Douglas\Documents\Projetos Net\Estoque_t2ti\src\com\br\relatorios\relatorio.jasper"; // ele diz que é ilegal escape character
JasperPrint jasperPrint = JasperFillManager.fillReport(arquivoJasper,parametros, jrRS);
JasperViewer.viewReport(jasperPrint);
[/code]
Fica com erro na linhas String arquivoJasper.[/quote]
Então, um pouco de básico de Strings:
Quando você coloca uma "\" o java entende que o próximo caractere será um caractere de escape.
#Maqueporraehessa?
Um caractere de escape, dentro de uma String, diz que ali haverá algo específico, como pular uma linha, tabular, etc.
[code]
String a = "A\nB";
System.out.print(a);
//note que não é println
[/code]
A saída será [code]
A
B
Como a estrutura de diretórios, invariavelmente, é lida assim
Ah, por favor, evite passar o caminho absoluto do arquivo, isso te limita muito. Faça o seguinte, leia sobre a classe File, há algumas propriedades de localização de arquivos e diretórios bem funcionais.
Será mais fácil, caso precise colocar o projeto ou mesmo fazê-lo rodar em outro computador (com outro SO, por exemplo)
Só uma pergunta, qual o nome do arquivo?
Tenta o seguinte, com a classe File, localizar o mesmo, se achar (e não lançar exception), pega o AbsolutePath e passa ele como parâmetro para o relatório.
Cara, na minha aplicação eu faço dessa forma vê se vc entende!
[code]
public class RelatorioCliente {
static Connection connection;
ResultSet rs = null;
public RelatorioCliente(String codigoImprCliente) {
/* Efetua a conexao a base de dados e coleta os valores da base de dados armazenando-os
em um array para ser futuramente utilizado */
RelatorioClienteTO relatorioClienteTO = new RelatorioClienteTO();
try {
Class.forName("org.apache.derby.jdbc.ClientDriver"); // O sun.jdbc.odbc.JdbcOdbcDriver significa que seria usado um banco access
String url = "jdbc:derby://localhost:1527/BancoBar;create=false";// esta string carrega o nome da fonte de dados
connection = 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 efetuada
PreparedStatement pstm = connection.prepareStatement( "select * from tb_Clientes where CodigoImprCliente = ?");
pstm.setString(1,codigoImprCliente);
rs = pstm.executeQuery();
if(rs.next()) {
relatorioClienteTO.setCodigoImprCliente(rs.getString("codigoImprCliente"));
relatorioClienteTO.setNomeCLi(rs.getString("nomeCLi"));
relatorioClienteTO.setTelefoneCli(rs.getString("telefoneCli"));
relatorioClienteTO.setEnderecoCli(rs.getString("enderecoCli"));
}
}
catch (Exception e) {
System.err.println("Problemas apresentados na operacao de conexao");
e.printStackTrace();
}
/* Inicio do bloco que ira gerar nossos relatorios e 3ª parte */
try {
JRBeanCollectionDataSource ds = null;
JasperPrint print = null;
//Verifica se existe no minimo uma proposta a ser impressar
List<RelatorioClienteTO > listaRelatorio = new ArrayList<RelatorioClienteTO>();
listaRelatorio.add(relatorioClienteTO);
ds = new JRBeanCollectionDataSource(listaRelatorio);
URL url = getClass().getResource("/relatorios/cliente_BarBalada.jasper");
JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(url);
print = JasperFillManager.fillReport(relatorioJasper, null , ds);
JasperViewer.viewReport(print,null,"Bar Balada", null);
} catch (JRException e) {
e.printStackTrace();
}
}
}[/code]
em seguida na outra tela com o Botão Imprimir eu chamo ela