Jaspersoft Studio 6 vs NetBeans 8
Olá, agradeço ajuda desde já
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
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
Curtidas 0
Respostas

Edilmar Alves
03/02/2015
Para usar o Jaspersoft Studio, voce tera que criar um projeto, configurar em Libraries as bibliotecas adicionais ou scriptlets que usa e apontar o Source para a pasta dos seus relatorios. Entao, conseguira compilar na boa o .jrxml e gerar o .jasper na mesma pasta, continuando a usar o NetBeans normalmente para o restante do trabalho.
GOSTEI 0

Thiago Lessa
03/02/2015
Pelo que sei, o IReport agora tem como IDE base o Eclipse. Até o IReport mudou de nome. Agora chama-se JasperSoft Studio. Mas a dinâmica de montagem dos relatórios continua a mesma. Baixei há algumas semanas e não vi muita diferença de quando utilizava o NetBeans.
GOSTEI 0

Romilson Cardoso
03/02/2015
Eric, tudo bem? O que esta precisando?
GOSTEI 0

Eric Clauber
03/02/2015
Opa Romilson,
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);
}
}
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

Romilson Cardoso
03/02/2015
Isso é fácil de resolver.
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.
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

Eric Clauber
03/02/2015
Romilson, não entendi muito bem, o código java.
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.
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

Romilson Cardoso
03/02/2015
Não precisa.
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);
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

Eric Clauber
03/02/2015
Romilson creio que tenha entendido desta vez... rs! Mas to tentando aqui, e não ta passando a String para o filtro. Mas testei direto no relatório(visualizar) e da certo. Passo a String ex.: r.codrota = 3 and p.codpraca = 1 and c.codcli = 10.
// 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);
}
}
// 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

Romilson Cardoso
03/02/2015
Beleza,
me passe então o que saiu no System.out.println(filtros) e o seu select o relatório.
Que eu consigo analisar melhor.
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

Eric Clauber
03/02/2015
Segue o select:
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.
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

Romilson Cardoso
03/02/2015
Faz seguinte coloque a clausula where no filtros vai ver que vai dar certo.
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.
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

Eric Clauber
03/02/2015
kkkkkkkkkkk...
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
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

Romilson Cardoso
03/02/2015
Deixe assim:
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.
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

Eric Clauber
03/02/2015
Entendi, Romilson agora deu tudo certo. Meu amigo muito obrigado pela ajuda. Acho que podemos fechar esse tópico... hehehe!
Fiz assim:
No relatório ficou: >>> from tabelas where $P!
>>> tive que passar todas as condições para o código java(foi assim q vc quis dizer???)
e no java ficou:
String filtros = " c.codpraca = p.codpraca and p.codrota = r.codrota";
if (!codRota.isEmpty()) {
filtros += " and r.codrota = " + codRota;
}
if (!codPraca.isEmpty()) {
filtros += " and p.codpraca = " + codPraca;
}
if (!codCliente.isEmpty()) {
filtros += " and c.codcli = " + codCliente;
}
Me ajudou muuuuuito. E em relação a data uso sim, mas nesse não precisarei!
Deus te abençoe...
Fiz assim:
No relatório ficou: >>> from tabelas where $P!
>>> tive que passar todas as condições para o código java(foi assim q vc quis dizer???)
e no java ficou:
String filtros = " c.codpraca = p.codpraca and p.codrota = r.codrota";
if (!codRota.isEmpty()) {
filtros += " and r.codrota = " + codRota;
}
if (!codPraca.isEmpty()) {
filtros += " and p.codpraca = " + codPraca;
}
if (!codCliente.isEmpty()) {
filtros += " and c.codcli = " + codCliente;
}
Me ajudou muuuuuito. E em relação a data uso sim, mas nesse não precisarei!
Deus te abençoe...
GOSTEI 0

Romilson Cardoso
03/02/2015
Beleza, que bom que ajudei. Precisando é só falar.
GOSTEI 0

Romilson Cardoso
03/02/2015
Tenho que ver a respeito do Jaspersoft studio ainda não parei para ver isso. Mas acredito que você pode alterar o local da pasta no jaspersoft studio.
GOSTEI 0

Edson Pessotti
03/02/2015
NO NETBEANS E SO INSSTALAR O PLUGIN ABAIXO, BAIXA DEPOIS INSTALA PELA ABA FERRAMENTAS/PLUGINS/OBITIDOS POR DOWNLOADS.
jasperserver-plugin-5.5.0.nbm, jasperreports-components-plugin-5.5.0.nbm, iReport-5.5.0.nbm, ${distro.zipfilename.extensions}.nbm
jasperserver-plugin-5.5.0.nbm, jasperreports-components-plugin-5.5.0.nbm, iReport-5.5.0.nbm, ${distro.zipfilename.extensions}.nbm
GOSTEI 0