Fórum Jaspersoft Studio 6 vs NetBeans 8 #509347
03/02/2015
0
Fui baixar o iReport, e no site informa que será descontinuado, mesmo assim baixei, e coincidentemente nao executava na minha máquina(nao sei prq). Entao baixei a versao mais recente JasperSoft Studio. Mas tutorial de utilizaçao no NetBeans(plugins,e bibliotecas ta dificil)...
Eu consegui fazer relatórios no próprio Jasper, mas o problema ta como levar para o NetBeans.
Alguem saberia de utilizaçao do TIBCO Jaspersoft Studio-6.0.1.final com o NetBeans 8.0.1.
Olhei de todo geito na Net, mas so tem tutorial do Ireport

Eric Clauber
Curtir tópico
+ 0Posts
20/03/2015
Edilmar Alves
Gostei + 0
23/03/2015
Thiago Lessa
Gostei + 0
25/08/2015
Romilson Cardoso
Gostei + 0
27/08/2015
Eric Clauber
Essa questão resolvi utilizando o Ireport com NetBeans 7.4 mesmo. Pois já estava acostumado e não queria mudar para o Eclipse, já que a nova versão(Jasper report), é compatível com Eclipse.
Mas tenho outra dúvida e ja ia abrir um novo Tópico aqui no fórum, se puder ajudar, agradeço.
Os relatórios que estou fazendo, até agora esta me suprindo. Só que estou precisando colocar mais de um filtro(parametros). Está dando certo assim: Se eu passar 2 filtros tipo;
where codigo = $P and data = $P >>>> Até aqui no 'select' funciona. O problema é quando nesta situação quero passar apenas um filtro. Tipo se tenho um relatório com dez filtros, mas na hora que o usuário for utilizar ele quer filtrar só pela 'data'. Assim o relatório não traz página por causa do 'and' e se trocar pelo 'or', traz tudo.
Não sei se fui claro, segue código.
public void imprimirCadClienteRota(int codRota/*, int codPraca, int codCliente*/) {
conexao = ConexaoBanco.fabricaConexao();
try {
//HashMap filtro = new HashMap();
Map<String, Object> filtro = new HashMap<String, Object>();
filtro.put("codRotaInt", codRota);
//filtro.put("codRota", codRota);
// filtro.put("codPraca", codPraca);
//filtro.put("codCliente", codCliente);
JasperPrint impressao = JasperFillManager.fillReport("C:/JRMaxSistema/build/classes/relatorios/RelClientesPorRotaResumido.jasper", filtro, conexao);
JasperViewer viwer = new JasperViewer(impressao, false);
viwer.setVisible(true);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao imprimir" + e);
}
}
Gostei + 0
27/08/2015
Romilson Cardoso
Crie um paramento no seu relatório com qualquer nome por exemplo: SQLFiltro (do tipo string) e no seu SQL do relatório use assim:
select campos... FROM tabela $P!
Agora no seu bean você monta o seu filtro colocando os filtros que deseja e passe da seguinte forma parameters.put("SQLFiltro", SQLFiltro);, Eu faço assim e funciona sem problemas. Você fazer também para ordenar os campos de acordo com selecionado usando o mesmo principio. Espere que te ajude. E desculpe se não fui bem claro na explicação.
exemplo:
SQLFiltro = " WHERE campo like '" + nomeVfaturamentoatendimento.trim() + "%' ";
if (filtro == 1) {
SQLFiltro = SQLFiltro + " and descempresa like '" + nomeEmpresa.trim() + "%' and ano = " + fano;
} else if (filtro == 2) {
SQLFiltro = SQLFiltro + " and descempresa like '" + nomeEmpresa.trim() + "%' ";
} else if (filtro == 4) {
SQLFiltro = SQLFiltro + " and descempresa like '" + nomeEmpresa.trim() + "%' and data = " + fdata;
} else if (filtro == 3) {
SQLFiltro = SQLFiltro + " and nome like '" + nomeEmpresa.trim() + "%' ";
} else if (filtro == 5) {
SQLFiltro = SQLFiltro + " and usuariocad like '" + nomeEmpresa.trim() + "%' ";
}
Espero que tenha ajudado.
Gostei + 0
27/08/2015
Eric Clauber
E de onde vem esse if (filtro == 1) ...
Para cada combinaçao de filtros terei um código?
Ex.: Filtro A, B, C. Terei 7 combinações(códigos)? (a), (b), (c), (a + b), (a + c), (b + c), (a + b +c). Sendo assim, se for 10 filtros, serão centenas ou milhares de combinaçoes... rsrs.
Gostei + 0
27/08/2015
Romilson Cardoso
Te passei o exemplo como eu faço meu filtro SQL. Hoje como você faz seu filtro? Por exemplo o seu filtro
filtro.put("codRotaInt", codRota);
//filtro.put("codRota", codRota);
// filtro.put("codPraca", codPraca);
//filtro.put("codCliente", codCliente);
Concorda que você tem que verificar se os códigos estão vazios ou não? neste caso seu poderia fazer assim?
SQLFiltro = " where 1=1 ";
if (codRota != null){
SQLFiltro += " and codRota = " + codRota;
} else if (codPraca != nul) {
SQLFiltro += " and codPraca = " + codPraca;
} else if (codCliente != nul){
SQLFiltro += " and codCliente = " + codCliente;
}
//
//se todos os campos estivese ok ficaria assim seu
//SQL: where 1=1 and codRota = 1 and codPraca = 1 and codCliente = 1
//SQL: where 1=1 and codRota = 1 and codPraca = 1
//
filtro.put("SQLFiltro", SQLFiltro);
Gostei + 0
27/08/2015
Eric Clauber
// meu código ficou assim. tirei os 'else if' e deixei so if, pois nao dava retorno nenhum. e coloquei .isEmpty no lugar de null, prq tb nao dava retorno. E pra eu saber o que tava //retornando validei em System.out.println(filtros).
// Mas o filtro não ta passando para o relatorio. Falta um detalhe minusculo pra da certo... rs
public void imprimirCadClienteRota(String codRota, String codPraca, String codCliente) {
conexao = ConexaoBanco.fabricaConexao();
try {
HashMap filtro = new HashMap();
//Map<String, Object> filtro = new HashMap<String, Object>();
String filtros = "";
if (!codRota.isEmpty()) {
filtros += "r.codrota = " + codRota;
}
if (!codPraca.isEmpty()) {
filtros += " and p.codpraca = " + codPraca;
}
if (!codCliente.isEmpty()) {
filtros += " and c.codcli = " + codCliente;
}
//filtros = "r.codrota = 3";
filtro.put("filtros", filtros);
System.out.println(filtros);
JasperPrint impressao = JasperFillManager.fillReport("C:/JRMaxSistema/build/classes/relatorios/RelClientesPorRotaResumido.jasper", filtro, conexao);
JasperViewer viwer = new JasperViewer(impressao, false);
viwer.setVisible(true);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao imprimir" + e);
}
}
Gostei + 0
27/08/2015
Romilson Cardoso
me passe então o que saiu no System.out.println(filtros) e o seu select o relatório.
Que eu consigo analisar melhor.
Gostei + 0
27/08/2015
Eric Clauber
select
c.codcli,
c.razaosocial,
c.fantasia,
c.cnpjcpf,
c.responsavel,
c.endereco,
c.numero,
c.cidade,
c.cep,
c.pontoref,
c.telcomercial,
c.telcelular,
c.ultnumped,
c.ultvalorped,
c.percdesc,
c.situacao,
p.codpraca,
p.praca,
r.codrota,
r.descricao
from
cliente as c,
praca as p,
rota as r where $P!(do tipo String) // coloquei aqui a clausula where, pois da no próprio relatório
****************************************************************************************************************************************************************8
No System.out.println(). Sai a String correta, e os valores que sao passado pelos parametros, de entrada do método:
saida: r.codrota = 3 and p.codpraca = 1 and c.codcli = 10.
so que o filtro.put(filtros) nao esta passando para o relatório.
Gostei + 0
27/08/2015
Romilson Cardoso
faz um teste forçado dazendo assim no filtro where 1 = 1 e veja o que acontece.
geralmente um uso o inner join ou left join.
Qualquer coisa posta novamente.
Gostei + 0
28/08/2015
Eric Clauber
Romilson, tava cometendo uma garfe aqui, agora deu certo. O problema não tava passando os filtro para o relatório, era que a localização do arquivo(.jasper) na aplicação, é diferente quando testo direto no relatório. Toda vez que faço alteração no relatório tenho que copiar para do local padrao, para o da aplicaçao.
1- Ex.: copio para >> "C:/Sistema/build/classes/relatorios/RelClientesPorRotaResumido.jasper". Isso é um dos problemas que ja tentei solução, mas sem sucesso. Tipo independente do local, que ele lesse no 'pacote' do java e não na localização, assim eu poderia mudar a aplicaçao de Disco/Local, sem se preocupar com isso.
Sem querer abusar de sua boa vontade, mas quando se programa e aprende só, a briga é maior... rsrs!
2- Se eu não passar nenhum filtro, deixar todos em branco da erro por causa do 'and' lá no SQL.
-- Ex: where $P! and c.codpraca = p.codpraca and p.codrota = r.codrota ou assim where c.codpraca = p.codpraca and p.codrota = r.codrota and $P!
3- Se eu deixar os primeiros filtros em branco, e utilizar os ultimos tb da erro, creio que seja por causa do and tb.
-- ex: sai assim and p.codpraca = 1
Gostei + 0
28/08/2015
Romilson Cardoso
where c.codpraca = p.codpraca and p.codrota = r.codrota
e no filtros passe o resto $P! pois só vai passar o AND quando realmente tive alguma condição vindo do filtro.
Obs: Você não usa uma data para filtra pelo período? Imagine seu banco crescendo e pelo que você coloca pode trazer tudo ou somente o do filtro.
Gostei + 0
28/08/2015
Romilson Cardoso
Gostei + 0
28/08/2015
Romilson Cardoso
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)