[b]Bom, criei um aplicação no netbeans so q na hora que mudei o projeto para outro pc, o relatorio não aparece.
o caminho do diretorio na maquina q criei roda beleza, o caminho eh esse:
Cara, é só fazer o que eu escrevi e substituir a string com o caminho do arquivo que tá sendo usado no getResource() e colocar um web.toString() - “web” é o nome que eu dei, no exemplo.
Entendeu?
Evite usar o caminho absoluto, pois ao mudar de máquina o arquivo não será encontrado.
[quote=fasts]Cara, é só fazer o que eu escrevi e substituir a string com o caminho do arquivo que tá sendo usado no getResource() e colocar um web.toString() - “web” é o nome que eu dei, no exemplo.
Entendeu?
Evite usar o caminho absoluto, pois ao mudar de máquina o arquivo não será encontrado.[/quote]
Cara ta dando erro! da uma olhada quando eu faço issu que vc mandou comentei onde ta dando erro!
OBS: to usando parametro.
[code] URL arquivo = getClass().getResource("/relatorios/ClienteProduto.jasper");
JasperReport jr;
jr = (JasperReport) JRLoader.loadObject(arquivo);
// mapa de parâmetros do relatório
Map parametros = new HashMap();
parametros.put("cliente", id);
try {
// abre o relatório
ReportUtils.openReport("Clientes", inputStream, parametros, // aki da erro no inputStream
ConnectionFactory.getSakilaConnection());
// Visualiza o relatório em formato PDF */
// JasperViewer.viewReport("idCliente.pdf", false);
} catch (SQLException exc) {
exc.printStackTrace();
} catch (JRException exc) { // aki da outro erro
exc.printStackTrace();
}
[/code]
explica melhor pq ainda ñ to entendendo,
desculpas ai o encomodo, mais to precisando apreender issu!
[quote=Fexx]mostra qual é o erro.
verifica tbm onde inseriu o relatório.
[/quote]
ERRO ReportUtils.openReport("Clientes", inputStream, parametros, //aki diz assim "Criar campo inputStream em JanelasViews.PesquisaNovo" ou criar variavel local
esse “ReportUtils.openReport” é a parte q trata o relatorio, criei ele em em uma classe.
Cara, se você tentar pegar o exemplo do Fexx e não copiar e colar no seu código talvez funcione…
É lógico que vai dar erro se o caminho do relatório dele não é o mesmo do seu.
Já aprenda a não ficar dando copiar e colar para o seu código, muito menos se o código for um exemplo dos outros.
E esse seu erro é bem simples. Você não tem uma variável declarada com esse nome inputStream, então ele dá esse aviso mesmo.
[quote=fasts]Cara, se você tentar pegar o exemplo do Fexx e não copiar e colar no seu código talvez funcione…
É lógico que vai dar erro se o caminho do relatório dele não é o mesmo do seu.
Já aprenda a não ficar dando copiar e colar para o seu código, muito menos se o código for um exemplo dos outros.
E esse seu erro é bem simples. Você não tem uma variável declarada com esse nome inputStream, então ele dá esse aviso mesmo.[/quote]
Cara esse inputStream é o que contem o relatorio! seguir o exemplo dele certin ñ copie e colei não! de cara da pra ve que ñ é apenas copiar e colar… ai ja seria burro demais!
public void threadRelatorioProdutosPorClientes(final JProgressBar progress, final JasperReport locaRelatorio, final String parametro1, final String parametro2, final GerarRelatorio nomeRelatorioGerarRelatorio, final Cliente idCliente){
Thread tThread = new Thread(new Runnable() {
@Override
public void run() {
progress.setIndeterminate(true);
try {
JasperPrint print = null;
Map<String , Object> map = null;
JasperReport localRelatorio = locaRelatorio;
map = new HashMap<String, Object>();
map.put(parametro1, nomeRelatorioGerarRelatorio.getNomeRelatorio());
map.put(parametro2, idCliente.getCodigo());
print = JasperFillManager.fillReport(localRelatorio, map, Conexao.getConexao());
progress.setIndeterminate(false);
System.out.println("Concluido");
JasperViewer.viewReport(print, false);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Não foi possivel exibir Relatório", "Erro ao gerar Relatorio", JOptionPane.DEFAULT_OPTION);
}
}
});
tThread.start();
}
E na classe que chamo o relatório ficou assim:
Cliente p = new PessoaJuridica();
GerarRelatorio g = new GerarRelatorio();
ClienteRelatorio cr = new ClienteRelatorio();
String nomeRelatorio = "NomeRelatorio";
String codigoCliente = "CodigoCliente";
if (jRBTodosOsClientesPorProduto.isSelected()) {
try {
URL arquivo = getClass().getResource("/relatorios/ClienteProduto.jasper");
JasperReport jr;
jr = (JasperReport) JRLoader.loadObject( arquivo );
g.setNomeRelatorio(jTfNomeRelatorioProdutoClientes.getText());
p.setCodigo(0);
cr.threadRelatorioProdutosPorClientes(jPGressProdutoPorClientes, jr, nomeRelatorio, "", g, p);
} catch (JRException e) {
JOptionPane.showMessageDialog(this, "Não foi possivel Gerar relatorio: "+e.getMessage());
}
Tente entender e implementar no seu código, não faz da mesma maneira como fiz se não estiver no seu padrão, pois isso que fiz é para casos específicos.
public void threadRelatorioProdutosPorClientes(final JProgressBar progress, final JasperReport locaRelatorio, final String parametro1, final String parametro2, final GerarRelatorio nomeRelatorioGerarRelatorio, final Cliente idCliente){
Thread tThread = new Thread(new Runnable() {
@Override
public void run() {
progress.setIndeterminate(true);
try {
JasperPrint print = null;
Map<String , Object> map = null;
JasperReport localRelatorio = locaRelatorio;
map = new HashMap<String, Object>();
map.put(parametro1, nomeRelatorioGerarRelatorio.getNomeRelatorio());
map.put(parametro2, idCliente.getCodigo());
print = JasperFillManager.fillReport(localRelatorio, map, Conexao.getConexao());
progress.setIndeterminate(false);
System.out.println("Concluido");
JasperViewer.viewReport(print, false);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Não foi possivel exibir Relatório", "Erro ao gerar Relatorio", JOptionPane.DEFAULT_OPTION);
}
}
});
tThread.start();
}
E na classe que chamo o relatório ficou assim:
Cliente p = new PessoaJuridica();
GerarRelatorio g = new GerarRelatorio();
ClienteRelatorio cr = new ClienteRelatorio();
String nomeRelatorio = "NomeRelatorio";
String codigoCliente = "CodigoCliente";
if (jRBTodosOsClientesPorProduto.isSelected()) {
try {
URL arquivo = getClass().getResource("/relatorios/ClienteProduto.jasper");
JasperReport jr;
jr = (JasperReport) JRLoader.loadObject( arquivo );
g.setNomeRelatorio(jTfNomeRelatorioProdutoClientes.getText());
p.setCodigo(0);
cr.threadRelatorioProdutosPorClientes(jPGressProdutoPorClientes, jr, nomeRelatorio, "", g, p);
} catch (JRException e) {
JOptionPane.showMessageDialog(this, "Não foi possivel Gerar relatorio: "+e.getMessage());
}
Tente entender e implementar no seu código, não faz da mesma maneira como fiz se não estiver no seu padrão, pois isso que fiz é para casos específicos.
Iae brother, eu seguir se exemplo, ele ta chamando o relatorio, mais ta dando um erro, diz q o documento não possui paginas! deve se porquer to usando parametros.
da uma olhada no jeito que eu fiz, como que eu faço para que o parametro funcione?
[code] int id = Integer.parseInt(jTextField2.getText());